Christos-Kotsis/crossword-puzzle-solver
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Μάθημα: Εισαγωγή στον προγραμματισμό Εξάμηνο: 1ο Εργασία: 4 >Πηγή: ------ Για την επίλυση των σταυρολέξων χρησιμοποιείται ο αλγόριθμος διάδοσης περιορισμών forward checking σε συνδυασμό με τον ευρετικό μηχανισμό minimum remaining values. Το paper από το οποίο πήρα την ιδέα για την διαμόρφωση του λεξικού αλλά και μία γενικότερη γνώση για τους δύο παραπάνω αλγορίθμους βρίσκεται στο link: https://web.stanford.edu/~jduchi/projects/crossword_writeup.pdf >Βασική ιδέα: ------------- Οταν έχω ένα slot με mrv και θέλω να τοποθετήσω μία λέξη σε αυτό τότε πρέπει να πάω σε όλες τις συμβατές λέξεις για το slot αυτό και να βρω μία για την οποία κανένα από τα slot που επηρρεάζει δεν έχει κενό domain, αν βρω, το βάζω στην στοίβα ενεργειών(το index του slot που συμπλήρωσα) και συνεχίζω με την ίδια διαδικασία, αν φτάσω στο τέλος του domain του και δεν βρω κατάλληλη λέξη έτσι ώστε να μην έχω άλλα domain κενά τότε αρχίζει η διαδικασία του backtracking που είναι: να σβήσω την τελευταία λέξη από την στοίβα ενεργειών, να επαναφέρω τα domains των slot που άλλαξα για αυτήν και να βαλω μία άλλη στο slot αυτό μέχρι να βρω μια κατάλληλη, αν βρω, κάνω break από το loop του backtracking και επαναλαμβάνω απο την αρχή, αν όχι, κάνω continue στο loop αυτό (για να σβηστεί η προηγούμενη απο την στοίβα κλπ). >Μετταγλώτιση: -------------- Για την μετταγλώτιση του προγράμματος αρκεί να εκτελεστεί η εντολή: "make crossw" όπου crossw είναι το εκτελέσιμο.