<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-X%3Adcho040</id>
	<title>SE250:lab-X:dcho040 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-X%3Adcho040"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-X:dcho040&amp;action=history"/>
	<updated>2026-04-28T17:27:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE250:lab-X:dcho040&amp;diff=8891&amp;oldid=prev</id>
		<title>Mark: 11 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-X:dcho040&amp;diff=8891&amp;oldid=prev"/>
		<updated>2008-11-03T05:20:43Z</updated>

		<summary type="html">&lt;p&gt;11 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== task1 ==&lt;br /&gt;
*ways to organize 9 values(8 values + 1 blank)&lt;br /&gt;
   9! = 362,880 &lt;br /&gt;
*edges&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   9!/1 (middle )=&amp;gt; 4 ways to move&lt;br /&gt;
   9!/4 (corners)=&amp;gt; 2 ways to move&lt;br /&gt;
   9!/4 (others )=&amp;gt; 3 ways to move&lt;br /&gt;
   total ways to move = 9!/1*4 + 9!/4*2 + 9!/4*3 = 1,905,120&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== task2 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool search( State* start, State* goal, StateList* solution, int* n_states_visited ) {&lt;br /&gt;
  OrderedStateList open;&lt;br /&gt;
  StateSet         visited;&lt;br /&gt;
  StateMap         path_map;&lt;br /&gt;
  bool success = false;&lt;br /&gt;
&lt;br /&gt;
// initialize the Map, Set and List&lt;br /&gt;
  init_OrderedStateList( &amp;amp;open );&lt;br /&gt;
  init_StateSet( &amp;amp;visited );&lt;br /&gt;
  init_StateMap( &amp;amp;path_map );&lt;br /&gt;
&lt;br /&gt;
// add starting states to the List and Set&lt;br /&gt;
  add_to_OrderedStateList( &amp;amp;open, start );&lt;br /&gt;
  add_to_StateSet( &amp;amp;visited, start );&lt;br /&gt;
&lt;br /&gt;
// Find the goal state using while&lt;br /&gt;
  while( ! is_empty_OrderedStateList( &amp;amp;open ) ) {&lt;br /&gt;
    State s;&lt;br /&gt;
// put children from before loop to S&lt;br /&gt;
    pop_OrderedStateList( &amp;amp;open, &amp;amp;s );&lt;br /&gt;
// return true and break when S has the goal&lt;br /&gt;
    if( same_state( &amp;amp;s, goal ) ) {&lt;br /&gt;
      success = true;&lt;br /&gt;
      break;&lt;br /&gt;
// else check all children&lt;br /&gt;
    } else {&lt;br /&gt;
      int i, n_children;&lt;br /&gt;
      State* cs = get_children( &amp;amp;s, &amp;amp;n_children );&lt;br /&gt;
      for( i = 0; i &amp;lt; n_children; i++ )&lt;br /&gt;
// if the child is not visited state&lt;br /&gt;
	if( add_to_StateSet( &amp;amp;visited, &amp;amp;cs[ i ] ) ) {&lt;br /&gt;
	  /* we have not yet seen this state */&lt;br /&gt;
// put the child in state Map&lt;br /&gt;
	  put_StateMap( &amp;amp;path_map, &amp;amp;cs[ i ], &amp;amp;s );&lt;br /&gt;
// save the child to ordered list&lt;br /&gt;
	  add_to_OrderedStateList( &amp;amp;open, &amp;amp;cs[ i ] );&lt;br /&gt;
	}&lt;br /&gt;
// reset the children&lt;br /&gt;
      release_children( cs );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
// get the solution list from the goal to the top in state map&lt;br /&gt;
  { State* s;&lt;br /&gt;
  for( s = goal; s != 0; s = get_StateMap( &amp;amp;path_map, s ) )&lt;br /&gt;
    add_to_StateList( solution, s );&lt;br /&gt;
  }&lt;br /&gt;
// save the number of states looked for this search&lt;br /&gt;
  if( n_states_visited )&lt;br /&gt;
    *n_states_visited = visited.size;&lt;br /&gt;
// free ordered list and Set&lt;br /&gt;
  free_OrderedStateList( &amp;amp;open );&lt;br /&gt;
  free_StateSet( &amp;amp;visited );&lt;br /&gt;
// return success&lt;br /&gt;
  return success;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==task4, 5==&lt;br /&gt;
*code&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  init_State( &amp;amp;start, &amp;quot;123456.78&amp;quot; );&lt;br /&gt;
  init_State( &amp;amp;goal,  &amp;quot;12345.786&amp;quot; );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*result&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
123&lt;br /&gt;
456&lt;br /&gt;
.78&lt;br /&gt;
 -&amp;gt;&lt;br /&gt;
123&lt;br /&gt;
456&lt;br /&gt;
7.8&lt;br /&gt;
 -&amp;gt;&lt;br /&gt;
123&lt;br /&gt;
456&lt;br /&gt;
78.&lt;br /&gt;
 -&amp;gt;&lt;br /&gt;
123&lt;br /&gt;
45.&lt;br /&gt;
786&lt;br /&gt;
 -&amp;gt;&lt;br /&gt;
Visited 6 states&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* order to get children&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  order (from get_children function)&lt;br /&gt;
&lt;br /&gt;
   left -&amp;gt; right -&amp;gt; up -&amp;gt; down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* how visited states are decided&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  * depth-first search *&lt;br /&gt;
&lt;br /&gt;
                                                       123   &lt;br /&gt;
  firstLevel                                           456    &lt;br /&gt;
                                                       .78    &lt;br /&gt;
&lt;br /&gt;
                           left(X)           right             up              down(X)           &lt;br /&gt;
&lt;br /&gt;
                                           123                      123                                            &lt;br /&gt;
  secondLevel                              456                      .56     &lt;br /&gt;
                                           7.8                      478  &lt;br /&gt;
                &lt;br /&gt;
                      left        right         up      down(X)&lt;br /&gt;
                (already visited)&lt;br /&gt;
                                   123           123&lt;br /&gt;
  thirdLevel                       456           4.6&lt;br /&gt;
                                   78.           758&lt;br /&gt;
&lt;br /&gt;
                     left    right(X)    up    down(X)&lt;br /&gt;
             (already visited)             &lt;br /&gt;
                                          123&lt;br /&gt;
  forthLevel                              45.&lt;br /&gt;
                                          786&lt;br /&gt;
&lt;br /&gt;
  6 states&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* discussion&lt;br /&gt;
 * depth-first search *&lt;br /&gt;
 one wrong way took a long time to turn back to right way&lt;br /&gt;
 if the way is right, quick search is possible&lt;br /&gt;
&lt;br /&gt;
==task6==&lt;br /&gt;
*code&lt;br /&gt;
  init_State( &amp;amp;start, &amp;quot;123456.78&amp;quot; );&lt;br /&gt;
  init_State( &amp;amp;goal,  &amp;quot;1235.6478&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
*searching structure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  * Breadth-first search *&lt;br /&gt;
&lt;br /&gt;
                                                       123   &lt;br /&gt;
  firstLevel                                           456    &lt;br /&gt;
                                                       .78    &lt;br /&gt;
&lt;br /&gt;
                           left(X)           right                               up                       down(X)           &lt;br /&gt;
&lt;br /&gt;
                                           123                                    123                                            &lt;br /&gt;
  secondLevel                              456                                    .56     &lt;br /&gt;
                                           7.8                                    478  &lt;br /&gt;
                &lt;br /&gt;
                      left        right         up      down(X)    left(X)   right     up      down&lt;br /&gt;
                (already visited)                                                           (already visited)&lt;br /&gt;
                                   123           123                        123        .23&lt;br /&gt;
  thirdLevel                       456           4.6                        5.6        156&lt;br /&gt;
                                   78.           758                        478        478&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  7 states&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*discussion&lt;br /&gt;
 Breadth-first search searches all states by each level from the top&lt;br /&gt;
&lt;br /&gt;
==discussion==&lt;br /&gt;
I will be back to this lab when I have more time but I have got some idea of Breadth first search and depth first search.&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>