Block World

Το πρόγραμμα παίρνει την αρχική κατάσταση και την βάζει σε μια PQ. Μετά την βγάζει, δημιουργεί κάθε πιθανή επόμενη κατάσταση και τις βάζει στη PQ. Μετά κανει ξανά το ίδιο μέχρι η κατάσταση που θα βγει από την PQ να είναι η κατάσταση στόχου.

Για την αποθήκευση των καταστάσεων χρησιμοποιείται μία PQ με χρήση HEAP με πίνακα, μία δομή κατάστασης που έχει την αξιολόγηση, τις μέχρι τώρα κινήσεις και έναν πίνακα δεικτών σε στοίβες για την φύλαξη των κύβων. Επίσης ένα δεύτερο PQ χρησιμοποιείται για την ταξινίμιηση των δεικτών σε στοίβες με βάση τον κύβο που είναι στο πάτωμα(ASCI κωδικός).

Η μία νέα ευρετική δίνει ποινή σε κάθε λάθος κύβο, σε κάθε κύβο που από κάτω του έχει τον σωστό αλλά πιο κάτω έχει λάθος δίνει άλλον έναν πόντο για διπλή κίνηση. Δεν κάνει κάποιο overestimation, άρα είναι admisible και δίνει τη βέλτιστη λύση. Παραμένει κάπως αργή παρόλα αυτά και λειτουργεί με λίγους κύβους.

H άλλη ευρετική λειτουργεί με Hill Climbing. Είναι γρήγορη και λειτουργεί με πολλούς κύβους, αλλά κάνει overestimate στο κόστος και δεν δίνει πάντα τη βέλτιστη λύση πάντα. Για να τρέξει το πρόγραμμα με αυτήν πρέπει να γίνει define το FAST στο PRQ.c αρχείο.