λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> Back Up Data

Τι είναι το backtracking;

Το Backtracking είναι μια γενική αλγοριθμική τεχνική που χρησιμοποιείται για την επίλυση προβλημάτων αναδρομικά προσπαθώντας να οικοδομήσουμε μια λύση σταδιακά, ένα κομμάτι κάθε φορά. Εάν σε οποιοδήποτε σημείο ο αλγόριθμος διαπιστώσει ότι η τρέχουσα προσέγγιση δεν μπορεί να οδηγήσει σε έγκυρη λύση (χτυπά ένα "αδιέξοδο"), "backtracks" - ανατρέπει το τελευταίο βήμα ή διάφορα βήματα και προσπαθεί μια διαφορετική προσέγγιση. Αυτή η διαδικασία συνεχίζεται μέχρι να βρεθεί μια λύση ή να διερευνηθούν όλες οι δυνατότητες.

Σκεφτείτε το σαν να εξερευνήσετε ένα λαβύρινθο:

* Ξεκινάτε στην είσοδο και δοκιμάστε μια διαδρομή.

* Εάν φτάσετε σε αδιέξοδο, επιστρέφετε στην τελευταία διασταύρωση και δοκιμάστε μια διαφορετική διαδρομή.

* Συνεχίζετε να το κάνετε μέχρι να βρείτε την έξοδο (λύση) ή να εξερευνήσετε όλα τα μονοπάτια.

Βασικά χαρακτηριστικά του backtracking:

* Αναδρομική: Οι αλγόριθμοι backtracking είναι εγγενώς αναδρομικοί. Κάθε αναδρομική κλήση διερευνά έναν διαφορετικό κλάδο του χώρου λύσης.

* Δοκιμή και σφάλμα: Είναι μια προσέγγιση δοκιμής και σφάλματος. Προσπαθεί διάφορες επιλογές και απορρίπτει εκείνες που δεν οδηγούν σε λύση.

* Εξερεύνηση του χώρου κατάστασης: Ο αλγόριθμος διερευνά συστηματικά ολόκληρο τον κρατικό χώρο (όλες τις πιθανές λύσεις), συχνά χρησιμοποιώντας μια δομή που μοιάζει με δέντρο για να αντιπροσωπεύει την αναζήτηση.

* Κλάδεμα: Μια κρίσιμη πτυχή είναι η ικανότητα να κλαδεύει (απορρίπτεται) τα κλαδιά του δέντρου αναζήτησης νωρίς εάν είναι αποφασισμένο ότι δεν μπορούν να οδηγήσουν σε έγκυρη λύση. Αυτό βελτιώνει σημαντικά την αποτελεσματικότητα.

Κοινές εφαρμογές του backtracking:

* Βρίσκοντας όλες τις πιθανές μεταβολές ενός συνόλου: Δημιουργώντας όλες τις πιθανές ρυθμίσεις των στοιχείων.

* Επίλυση του προβλήματος n-queens: Τοποθετώντας το Nchess Queens σε μια σκακιέρα N × N έτσι ώστε να μην απειλούνται δύο βασίλισσες ο ένας τον άλλον.

* Επίλυση παζλ sudoku: Συμπληρώνοντας τα κενά κύτταρα ενός πλέγματος Sudoku σύμφωνα με τους κανόνες του παιχνιδιού.

* Δημιουργία όλων των υποσυνόλων ενός σετ: Βρίσκοντας όλους τους πιθανούς συνδυασμούς στοιχείων από ένα σετ.

* αλγόριθμοι διαδρομής γραφικών (π.χ., βάθος-πρώτη αναζήτηση): Εξερεύνηση όλων των διαδρομών σε ένα γράφημα.

* Προβλήματα ικανοποίησης περιορισμού: Προβλήματα όπου οι λύσεις πρέπει να ικανοποιούν ένα σύνολο περιορισμών.

Παράδειγμα (απλοποιημένα n-quens):

Φανταστείτε να τοποθετήσετε δύο βασίλισσες σε μια σκακιέρα 2x2. Ένας αλγόριθμος backtracking θα:

1. Δοκιμάστε να τοποθετήσετε την πρώτη βασίλισσα στην κορυφαία γωνία.

2. Δοκιμάστε να τοποθετήσετε τη δεύτερη βασίλισσα στην επάνω δεξιά γωνία. Αυτό είναι άκυρο (οι Queens επιτίθενται ο ένας τον άλλον).

3. Backtrack:Αφαιρέστε τη δεύτερη βασίλισσα.

4. Δοκιμάστε να τοποθετήσετε τη δεύτερη βασίλισσα στην κάτω αριστερή γωνία. Αυτό δεν είναι άκυρο.

5. Backtrack:Αφαιρέστε τη δεύτερη βασίλισσα.

6. Backtrack:Αφαιρέστε την πρώτη βασίλισσα.

7. Δοκιμάστε να τοποθετήσετε την πρώτη βασίλισσα στην επάνω δεξιά γωνία ... και ούτω καθεξής μέχρι να βρεθεί μια λύση (ή η έλλειψη).

Στην ουσία, το backtracking είναι μια ισχυρή αλλά δυνητικά υπολογιστική δαπανηρή τεχνική για την επίλυση προβλημάτων όπου ο χώρος λύσης είναι μεγάλος και πρέπει να διερευνηθεί συστηματικά. Η αποτελεσματικότητα εξαρτάται από το πόσο αποτελεσματικά ο αλγόριθμος μπορεί να κλαδεύει τον χώρο αναζήτησης.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα