Ακολουθεί μια ανάλυση του τρόπου με τον οποίο λειτουργεί:
1. Εκπροσώπηση χώρου κατάστασης: Το πρόβλημα αντιπροσωπεύεται ως δέντρο ή γράφημα όπου κάθε κόμβος αντιπροσωπεύει μια μερική λύση. Ο κόμβος ρίζας αντιπροσωπεύει την αρχική κατάσταση και τα κλαδιά αντιπροσωπεύουν επιλογές ή αποφάσεις που λαμβάνονται σε κάθε βήμα. Τα φύλλα αντιπροσωπεύουν είτε πλήρεις λύσεις είτε αδιέξοδο.
2. Ο αλγόριθμος ξεκινά από τον κόμβο ρίζας και διερευνά ένα κλάδο κάθε φορά, πηγαίνει όσο το δυνατόν βαθιά (βάθος-πρώτα). Αυτό σημαίνει ότι κάνει μια σειρά επιλογών μέχρι να βρει μια λύση ή να χτυπήσει ένα αδιέξοδο.
3. Έλεγχος περιορισμού/υποσχόμενη: Σε κάθε κόμβο, πραγματοποιείται έλεγχος για να διαπιστωθεί εάν η τρέχουσα μερική λύση εξακολουθεί να είναι "υποσχόμενη" - που σημαίνει ότι είναι δυνατόν να επεκταθεί σε μια πλήρη λύση. Αυτό είναι όπου η απόδοση εισέρχεται. Εάν η τρέχουσα μερική λύση παραβιάζει τους περιορισμούς του προβλήματος (π.χ. σε ένα παζλ Sudoku, τοποθετώντας έναν αριθμό που βρίσκεται ήδη στη σειρά, στη στήλη ή 3x3), ο αλγόριθμος ξέρει ότι δεν χρειάζεται να διερευνήσει περαιτέρω αυτόν τον κλάδο. Αυτό είναι το κλάδεμα βήμα.
4. backtracking: Εάν ένας κόμβος θεωρείται ότι δεν υποσχθεί ή εάν ένας κόμβος φύλλων αντιπροσωπεύει μια αποτυχημένη προσπάθεια να βρεθεί μια λύση, ο αλγόριθμος "backtracks" στον προηγούμενο κόμβο (γονέας) και προσπαθεί διαφορετικό κλάδο (διαφορετική επιλογή). Αυτό συνεπάγεται την ανατροπή των επιλογών που έγιναν κατά μήκος αυτού του κλάδου και την εξερεύνηση εναλλακτικών δυνατοτήτων.
5. Λύση που βρέθηκε: Όταν ένας κόμβος φύλλων αντιπροσωπεύει μια πλήρη και έγκυρη λύση, ο αλγόριθμος έχει βρει μια λύση και μπορεί είτε να σταματήσει (εάν η εύρεση μιας λύσης είναι επαρκής) είτε συνεχίζει να ψάχνει για άλλες λύσεις με την επιστροφή και την εξερεύνηση άλλων κλάδων.
Παράδειγμα:N-Queens Πρόβλημα
Ας εξετάσουμε το ενδεχόμενο να τοποθετήσουμε το N Chess Queens σε μια σκακιέρα N × N έτσι ώστε να μην απειλούνται δύο βασίλισσες ο ένας τον άλλον.
* Κρατικός χώρος: Κάθε κόμβος στο δέντρο αντιπροσωπεύει μια μερική τοποθέτηση των βασίλισσας στο σκάφος.
* επιλογή: Σε κάθε επίπεδο του δέντρου γίνεται μια επιλογή για το πού να τοποθετήσετε την επόμενη βασίλισσα στη στήλη.
* Περιορισμός: Ο περιορισμός είναι ότι δεν υπάρχουν δύο βασίλισσες στην ίδια σειρά, στήλη ή διαγώνιο.
* Κλάδεμα: Εάν η τοποθέτηση μιας βασίλισσας παραβιάζει τον περιορισμό, ο κλάδος αυτός είναι κλαδευμένο. Ο αλγόριθμος δεν διερευνά περαιτέρω αυτόν τον κλάδο.
* backtracking: Εάν μια τοποθέτηση οδηγεί σε παραβίαση, ο αλγόριθμος επιστρέφει στην προηγούμενη στήλη, αφαιρεί τη βασίλισσα και προσπαθεί μια διαφορετική θέση σε αυτή τη στήλη.
Συνοπτικά: Η απόδοση του Backtracking προέρχεται από την ικανότητά του να αποφεύγει να εξερευνήσει περιττά τμήματα του χώρου αναζήτησης με έξυπνα κλάδεμα κλαδιά που εγγυώνται ότι δεν οδηγούν σε λύση. Αυτό μειώνει σημαντικά τον χρόνο υπολογισμού σε σύγκριση με τις εξαντλητικές μεθόδους αναζήτησης που θα δοκιμάσουν κάθε συνδυασμό. Η αποτελεσματικότητα εξαρτάται από το πόσο καλά ο "υποσχόμενος" έλεγχος έχει σχεδιαστεί για τον εντοπισμό και την εξάλειψη των μη βιώσιμων διαδρομών νωρίς στην αναζήτηση.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα