Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pa:laboratoare:laborator-12 [2020/05/30 19:30]
darius.neatu
pa:laboratoare:laborator-12 [2020/05/31 20:27] (current)
darius.neatu
Line 111: Line 111:
  
 <code cpp> <code cpp>
-A-Star(s initial ​, expand, h, solution)+// s_i      = stare initiala 
 +// expand ​  = functie de expandare care returneaza toti succesorii unei stari 
 +// h        = functie euristica (h(n) = aproximarea drumului minim de la n la o destinatie) 
 +// is_goal ​ = is_goal(n) returneaza true daca n este o destinatie (stare goal/​finala) 
 +// w        = w[x][y] reprezinta costul muchiei directe intre starile x si y 
 +A*(s_i, expand, h, is_goal)
  //​initializari  //​initializari
-    closed ← {} +    closed ← {}     // multimea nodurilor expandate 
-    n ← new-node() +    open   ​← { }    // multimea nodurilor in curs de explorare
-    state(n) ← s initial +
-    g(n) ← 0 +
-    π(n) ← nil +
-    open ← { }+
  
-    //Bucla principala +    // pentru fiecare stare s 
-    ​repeat +    ​for each s 
-        ​if open = Ø then return failure +        ​g(s) ← Infinity // initializare distante 
-        ​← get_best(open) with f(n) = g(n)+h(n= min +        π(s) ← Infinity // initializare parinti 
-        open ← open - {n+ 
-        if solution(state(n)then return ​build-path(n+    // pentru s_i avem distanta 0 si parinte NULL 
-        ​else if not in closed ​then +    g(s_i) ← 0 
-            closed ← closed U {n+    π(s_i) ← NULL 
-            for each in expand(n+    ​open   ← open U { s_i } 
-                ​cost_from_n ← g(n) + cost(state(n), ​s+ 
-                if not (s in closed U openthen +    // parcurgerea continua cat timp avem noduri in open 
-                    ​n' ← new-node() +    while !open.empty() 
-                    ​state(n') ← s +        ​// extrage nodul s cu f(s) minim 
-                    π(n') ← n +        s ← get_best(open) with minimum ​f(s) = g(s) + h(s
-                    ​g(n'← cost_from_n +        open ← open - { } 
-                    open ← open U { n'} + 
-                else +        // daca s este stare finala 
-                    n' ← get(closed U open, s) +        if is_goal(s 
-                    if cost_from_n < g(n') then +            // reconstituie drumul de la s la s_i 
-                        π(n') ← n +            ​return ​build_path(s, s_i
-                        g(n') ← cost_from_n +        ​ 
-                        if n' ​in closed ​then +        // daca nodul nu este deja expandat  
-                            closed ← closed – { n'+        ​if not in closed 
-                            open ← open U { n'+            // il adaug in closed 
-     end-for +            closed ← closed U { } 
-    ​end-repeat+ 
 +            // pentru fiecare copil c al starii s 
 +            for each in expand(s
 +                ​if g(s) + w[s][c] < g(c
 +                    ​// actualizez distanta si parintele 
 +                    ​g(c) ← g(s) + w[s][c] 
 +                    π(c) ← 
 + 
 +                    ​if not (c in closed U open// daca nodul c nu a mai fost intalnit 
 +                        open   ​← open U {   // c intra in open 
 +                    ​else if in closed ​        // daca nodul c a mai fost expandat 
 +                        closed ← closed – { // c trece din closed in open 
 +                        open   ​← open U { 
 + 
 +    ​// nu a fost gasita o cale de la s_i la o stare goal s 
 +    return failure
 </​code>​ </​code>​
  
Line 243: Line 259:
 a) O euristica care nu este admisibilă a) O euristica care nu este admisibilă
  
-<​hidden>​ 
 h(S) = nE(S) h(S) = nE(S)
-</​hidden>​+
  
 b) Doua euristici admisibile b) Doua euristici admisibile
  
-<​hidden>​ 
 h1(S) = nE(S)/2 h1(S) = nE(S)/2
  
Line 262: Line 276:
 nE - numar oameni est nE - numar oameni est
  
-</​hidden>​ 
  
 Comparati numarul de pasi necesar pentru a ajunge la solutie in functie de euristica Comparati numarul de pasi necesar pentru a ajunge la solutie in functie de euristica
pa/laboratoare/laborator-12.txt · Last modified: 2020/05/31 20:27 by darius.neatu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0