background image

33 | 

9 4

 

 

 

Εικόνα 9: Αριστερά: πρόβλημα λαβυρίνθου - Δεξιά: Θέση κάθε κόμβου (θέσεις δισδιάστατου πίνακα) του 

λαβυρίνθου 

 

Για αυτό το πρόβλημα, υπάρχουν τέσσερις κινήσεις (αριστερά, δεξιά, πάνω και κάτω) 

από  μια  θέση  λαβυρίνθου,  εφόσον  υπάρχει  ένα  έγκυρο  βήμα.  Στις  κόκκινες  θέσεις  δεν 

επιτρέπεται καμία  κίνηση (παράδειγμα: στην αρχική θέση είναι διαθέσιμη μόνο μία κίνηση 

προς τα κάτω, καθώς η κίνηση προς τα επάνω και προς τα αριστερά είναι μπλοκαρισμένη από 

τον τοίχο ενώ προς τα δεξιά υπάρχει κόκκινη θέση, επομένως δεν επιτρέπεται κίνηση). 

 

Αρχικά  θα  δημιουργήσουμε  την  κλάση  Node  και  μία  βοηθητική  συνάρτηση 

GetPath(): 

(1)  Η  Κλάση  Node:  που  μπορεί  να  χρησιμοποιηθεί  για  τη  δημιουργία  ενός 

αντικειμένου  για  κάθε  κόμβο  με  μεταβλητές,  τον  γονικό  κόμβο,  τρέχουσα  θέση  στο 

λαβύρινθο και τιμές κόστους (g, h & f). 

(2)  Η  Συνάρτηση  GetPath():  Έπειτα  θα  πρέπει  να  ορίσουμε  μια  συνάρτηση  που  θα 

επιστρέφει τη διαδρομή από τον κόμβο έναρξης προς τον τερματικό κόμβο.  

(3) Θα δημιουργήσουμε μια συνάρτηση αναζήτησης που θα είναι η κυρίως λογική του 

αλγορίθμου: 

(3.1) Αρχικοποιούμε όλες τις μεταβλητές. 

(3.2)  Προσθέτουμε  τον  κόμβο  εκκίνησης  στη  λίστα  "yetToVisit".  Ορίζουμε  μια 

κατάσταση διακοπής για να αποφύγουμε έναν ατέρμονα βρόχο. Καθορίζουμε την κίνηση σε 

σχέση με τον τρέχοντα κόμβο.