Advertisement
Guest User

teeeeeeext ai

a guest
Oct 23rd, 2017
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. /*
  2. Ce se da?
  3. Identificam datele de intrare
  4. Ce se cere?
  5.  
  6. ** Suma a 2 numere **
  7. input: x, y;
  8. reguli: pozitive, naturale, pare
  9. output: x+y;
  10.  
  11. SOLUTIE = Algoritm care rezolva orice instanta a problemei. Algoritm care ofera rezultatul corect, pentru orice input. Trebuie tratate si cazurile in care
  12. rezultatul nu poate fi afisat.
  13.  
  14.  
  15.  
  16.  
  17. *** Problema turnurilor din hanoi // caz clasic: 3turnuri, 4 piese.
  18.  
  19. input: - n turnuri
  20. - m piese
  21.  
  22. reguli: - piese de marimi diferite
  23. - nu poate sta o piesa mare pe o piesa mica
  24. - pot muta o singura piesa.
  25.  
  26. output:
  27.  
  28.  
  29. Modelarea problemei:
  30. Pas 1: identificarea unei stari a problemei.
  31. (3, x, y). 3-nr turnuri. x-unde se afla piesa 1. y-unde se afla piesa 2
  32. nu poate lipsi starea finala
  33. starea finala nu poate fi ca si starea initiala
  34.  
  35. Pas 2: starea initiala. Transfera starea initiala in instanta.
  36. (n turnuri, m piese). Fac o lista ...
  37. tot timpul cunoaste o stare
  38. se opreste cand starea curenta = starea finala.
  39.  
  40. stare initializare(n, m) {
  41. return (n, 1, 1, ..)
  42. }
  43.  
  44. boolean getStareFinala(STARE) {
  45. if(STARE = (n, n, n, ...) )
  46. return false;
  47. return true;
  48. }
  49.  
  50.  
  51. Pas 3. Validarea tranzitiilor
  52. stare tranzitie(stare_curenta, piesa_x, piesa_y) {
  53. stare_curenta(x) = y;
  54. return stare_curenta;
  55. }
  56.  
  57. boolean validare(stare_curenta, piesa_x, piesa_y) {
  58. if(stare_curenta(x) = y) return false;
  59. for(i=1; i<x; i++) {
  60. if(stare_curenta(i) == y) return false; // daca pot pune o piesa mare pe o piesa mica
  61. if(stare_curenta(i) == x) return false; // daca piesa are o piesa mai mica pe ea
  62. }
  63. return true;
  64. }
  65.  
  66. Pas 4. Strategia // permite pc cum sa schimbe starea curenta
  67. void strategie ( stare ) {
  68. while(!st.finala(stare)) {
  69. choose x, y; // parametri tranzitiei
  70. if(validare(stare, x, y))
  71. stare_curenta = tranzitie(stare, x, y);
  72. }
  73. }
  74.  
  75. posibilitati de a alege X, Y:
  76. 1. random (2 optimizari:[
  77. (evitam cicluri. tinem minte starile vizitate anterior, si cand facem validarea tranzitiilor, verificam daca starea e starea vizitata anterior)
  78. (punem un contor. daca nu a gasit solutii intr-un numar de pasi, revine la starea initiala si continua de acolo)
  79. ])
  80. aleg 0 < x < pieces si 0 < y < towers
  81.  
  82. 2. bkt ( metoda lenta. complexitate mare. incercat bkt sa NU fie recursiv *sad* )
  83. - pentru a defini pe rand ceva, trebuie sa fie in ordine.
  84. - din orice stare as fi, starile accesibile din st_curenta, sunt in ordine
  85. - daca am de ales intre starile alea, o aleg pe urmatoarea de dupa alegerea pe care am facut-o anterior. daca nu am mai facut nicio alegere, o iau pe prima
  86. # tine minte numarul alegii facut la pasul respectiv
  87. - daca nu mai am nicio stare accesibila, ma intorc inapoi si aleg celelalte stari
  88. la choose x,y, aleg in ordine.
  89.  
  90. 3. hillclimbing ( )
  91. - aseaza starile in spatiu, in asa fel incat st_iniala este jos, st_finala este sus
  92. - cautarea solutiei se face in de jos in sus.
  93. - cum ordonam starile? :
  94. # 2 probleme: daca esti intr-o stare, si avem 4 stari accesibile. evaluez scorul acelesi stari, si verific care e >= scorul starii_curente.
  95. RECOMANDARE: hillclimbing implementat cu random.
  96. cand alegem, calculam scor pt fiecare stare. pastram doar starile care au scor >= stare_curent, si aleg random.
  97.  
  98. 4. A*
  99. - cum privesc spatiul problemei? il impart in felii. ordonez/asez starile pe categorii
  100.  
  101.  
  102. •-------------------------------•
  103. | RAN | BKT | HC | A* |
  104. |-------+-------+-------+-------|
  105. 1 sol |-> Y <-| Y | N | Y |
  106. toate sol | N |-> Y <-| N | Y |
  107. sol optima | N | N | N |-> Y <-|
  108. | | | | |
  109. •-------------------------------•
  110.  
  111. ## (3) De ales o functie de scor rapida.
  112.  
  113. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement