Differences

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

Link to this comparison view

pa:laboratoare:laborator-06 [2018/04/09 22:00]
radu.iacob [Referinte]
pa:laboratoare:laborator-06 [2020/04/22 18:52] (current)
darius.neatu [Laborator 06: Minimax]
Line 3: Line 3:
 Responsabili:​ Responsabili:​
   * [[neatudarius@gmail.com|Darius Neațu]]   * [[neatudarius@gmail.com|Darius Neațu]]
-  * [[visanr95@gmail.com|Radu Vișan]] +  * [[stefanpopa2209@gmail.com | Ștefan Popa]] 
-  * [[cristb@gmail.com|Cristian Banu]]+
  
 ===== Obiective laborator ===== ===== Obiective laborator =====
Line 261: Line 261:
 // alege cea mai buna mutare pentru jucatorul maxi // alege cea mai buna mutare pentru jucatorul maxi
 // functia returneaza best_score pentru maxi, dar tine cont si de ce ii perminte mini // functia returneaza best_score pentru maxi, dar tine cont si de ce ii perminte mini
-int aplhabeta_maxi(int ​aplha, int beta, int depth) {+int aplhabeta_maxi(int ​alpha, int beta, int depth) {
     // daca jocul s-a terminat sau am atins nivelul maxim de recursivitate ales     // daca jocul s-a terminat sau am atins nivelul maxim de recursivitate ales
     if (gameOver() || depth == 0 ) {     if (gameOver() || depth == 0 ) {
Line 296: Line 296:
 // alege cea mai buna mutare pentru jucatorul mini // alege cea mai buna mutare pentru jucatorul mini
 // functia returneaza best_score pentru mini, dar tine cont si de ce ii perminte maxi // functia returneaza best_score pentru mini, dar tine cont si de ce ii perminte maxi
-int aplhabeta_mini(int ​aplha, int beta, int depth) {+int aplhabeta_mini(int ​alpha, int beta, int depth) {
     // daca jocul s-a terminat sau am atins nivelul maxim de recursivitate ales     // daca jocul s-a terminat sau am atins nivelul maxim de recursivitate ales
     if (gameOver() || depth == 0 ) {     if (gameOver() || depth == 0 ) {
Line 346: Line 346:
 int alphabeta_negamax(int aplha, int beta, int depth) { int alphabeta_negamax(int aplha, int beta, int depth) {
     // daca jocul s-a terminat sau am atins nivelul maxim de recursivitate ales     // daca jocul s-a terminat sau am atins nivelul maxim de recursivitate ales
-    if (gameOver() || depth == 0 ) {+    if (depth == 0 || gameOver()) {
        ​return evaluate(); ​           // ne oprim si evaluam starea curenta        ​return evaluate(); ​           // ne oprim si evaluam starea curenta
     }     }
-            ​+     
 +    int max = -oo; 
 +    ​
     // incercam pe rand fiecare care miscare posibila move        // incercam pe rand fiecare care miscare posibila move   
     for (move : all_moves) {     for (move : all_moves) {
Line 356: Line 358:
         // incercam sa simulam jocul mai departe: ​         // incercam sa simulam jocul mai departe: ​
         // daca jucatorul CURENT face face move, ce ar face ADVERSARUL?         // daca jucatorul CURENT face face move, ce ar face ADVERSARUL?
-        int score = -alphabeta_negamax(-beta,​ -aplha depth - 1);  // cel mai bine pentru el, +        int score = -alphabeta_negamax(-beta,​ -alpha, ​depth - 1);  // cel mai bine pentru el, 
                                                                   // este cel mai rau pentru mine                                                                   // este cel mai rau pentru mine
                                                                   // si invers                                                                   // si invers
Line 362: Line 364:
         // dintre toate variantele pe care ADVERSARUL le permite (!!!),         // dintre toate variantele pe care ADVERSARUL le permite (!!!),
         // EU (jucatorul CURENT) o voi alege pe cea cu scor maxim         // EU (jucatorul CURENT) o voi alege pe cea cu scor maxim
-        if (score >= alpha) { +        if (score >= max) { 
-            alpha = score;+            max = score; 
 +        } 
 + 
 +        if (max > alpha) { 
 +            alpha = max;
         }         }
  
Line 479: Line 485:
 <​note>​ <​note>​
 In acest laborator vom folosi scheletul de laborator din arhiva {{pa:​new_pa:​skel-lab06.zip}}. In acest laborator vom folosi scheletul de laborator din arhiva {{pa:​new_pa:​skel-lab06.zip}}.
 +
 +Fiecare problemă are surse și Makefile (ex. "cd cpp/p1/; make; make run").
 </​note>​ </​note>​
  
pa/laboratoare/laborator-06.1523300431.txt.gz · Last modified: 2018/04/09 22:00 by radu.iacob
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