Αλγόριθμοι Αναζήτησης

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

Chord: A scalable Peer-to-Peer Lookup Service for Internet Applications Παρουσίαση: Αθανασόπουλος, Αλεξάκης, Δεβελέγκα, Πεχλιβάνη, Φωτιάδου, Φωτόπουλος.
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
PROLOG.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Διακριτά Μαθηματικά ΙI Δυαδικά Δέντρα Αναζήτησης
Διακριτά Μαθηματικά ΙI Δέντρα
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
Αναζήτηση (Search) ΤΜΗΜΑ ΜΠΕΣ.
1 Τμήμα Ψηφιακών Συστημάτων – Πανεπιστήμιο Πειραιώς Αναζήτηση (Search)
Αλγόριθμοι και Πολυπλοκότητα
Αλγόριθμοι Αναζήτησης
Συνέπεια Τόξου (Arc Consistency)
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Επισκόπηση Εισαγωγή στην Τεχνητή Νοημοσύνη, Επίλυση προβλημάτων,
Ε. ΠετράκηςΣτοίβες, Ουρές1 Στοίβες  Στοίβα: περιορισμένη ποικιλία λίστας  τα στοιχεία μπορούν να εισαχθούν ή να διαγραφούν μόνο από μια άκρη : λίστες.
Ουρά Προτεραιότητας: Heap
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
Επισκόπηση Εισαγωγή στην Τεχνητή Νοημοσύνη Επίλυση προβλημάτων
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ. Πληροφορικής,
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Αναζήτηση Κατά Βάθος Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Δομές Δεδομένων και Αρχεία Ενότητα 10: Κυκλικά και Διπλά Συνδεδεμένη Λίστα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I.
Δομές Δεδομένων και Αρχεία
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Αναζήτηση (Search) συνέχεια ΤΜΗΜΑ ΜΠΕΣ.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ Άπληστη Αναζήτηση και Αναζήτηση Α* ΣΠΥΡΟΣ ΛΥΚΟΘΑΝΑΣΗΣ, ΚΑΘΗΓΗΤΗΣ.
1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ. 2 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα –Αναζήτηση κατά βάθος (Depth-first search – DFS) –Αναζήτηση κατά πλάτος (Breadth-first.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Οι Δομές Δεδομένων Ουρά και Στοίβα
Δυναμικός Κατακερματισμός
Επίλυση Προβλημάτων με Αναζήτηση
Επίλυση Προβλημάτων με Αναζήτηση
Διερεύνηση γραφήματος
Βελτιστοποίηση σε τρίλιζα Καταδίωξη/διαφυγή
Web Services στη C# Εργαστήριο 3
EPL231 – Data Structures and Algorithms
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Οι Δομές Δεδομένων Ουρά και Στοίβα
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Δυναμικός Κατακερματισμός
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
ΠΙΝΑΚΕΣ Δομή ΟΥΡΑΣ (queue)
Μεταγράφημα παρουσίασης:

Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση ΤΜΗΜΑ ΜΠΕΣ

Εύρεση Μονοπατιού σε Λαβύρινθο X G D S Έστω ο λαβύρινθος του σχήματος με ένα σημείο εισόδου S, και τρία σημεία εξόδου G. Έστω ότι ένα ρομπότ, το οποίο μπορεί να κινηθεί μόνο οριζόντια και κάθετα, εισέρχεται από το σημείο S και πρέπει να βρει ένα μονοπάτι από το S σε κάποιο από τα G. Με Χ συμβολίζονται τα τετραγωνάκια στα οποία δεν μπορεί να κινηθεί το ρομπότ. Με D συμβολίζονται οι πόρτες που υπάρχουν στον λαβύρινθο. Το κόστος μετακίνησης από ένα τετραγωνάκι σε ένα λευκό τετραγωνάκι είναι 1. Το κόστος μετακίνησης από ένα τετραγωνάκι σε ένα τετραγωνάκι που αντιστοιχεί σε πόρτα είναι 2. X G D S ΤΜΗΜΑ ΜΠΕΣ

Εργασία 1 - Τυφλή Αναζήτηση Υλοποιήστε πρόγραμμα που επιλύει το πρόβλημα εύρεσης μονοπατιού στον λαβύρινθο χρησιμοποιώντας τους εξής αλγόριθμους τυφλής αναζήτησης: Αναζήτηση πρώτα κατά πλάτος (BFS) με ή χωρίς αποφυγή επαναλαμβανόμενων καταστάσεων (δική σας επιλογή) Αναζήτηση ενιαίου κόστους (UCS) Αναζήτηση επαναληπτικήw εκβάθυνση (IDS). Για τον αλγόριθμο αυτό το βήμα αύξησης του ορίου αναζήτησης θα είναι 1 Η αναζήτηση κατά βάθος καλύτερα να υλοποιηθεί με αποφυγή επαναλαμβανόμενων καταστάσεων ΤΜΗΜΑ ΜΠΕΣ

Εργασία 1 - Τυφλή Αναζήτηση Μετά την ολοκλήρωση της εκτέλεσης κάθε αλγορίθμου να τυπώνεται το μονοπάτι της λύσης που βρέθηκε και το κόστος του μονοπατιού. Επίσης πρέπει να τυπώνεται το πλήθος κόμβων στο δέντρο αναζήτησης που δημιούργησε ο κάθε αλγόριθμος. Η υλοποίηση μπορεί να γίνει σε μια γλώσσα όπως η Java, η C, και η C++ σε ομάδες ως και δύο ατόμων. Προθεσμία παράδοσης άσκησης: 19/11/2008. Τρόπος παράδοσης: ο κώδικας με email στον konsterg@aegean.gr και (συζευκτικό) με παρουσίαση στο εργαστήριο στις 19/11 ή σε οποιοδήποτε εργαστήριο μέχρι τότε. Να σημειωθεί ότι η παρουσίαση στο εργαστήριο είναι υποχρεωτική. ΤΜΗΜΑ ΜΠΕΣ

Θέματα Υλοποίησης Πρώτα από όλα, είναι απαραίτητο να αποθηκευτεί σε κάποια δομή η τοπολογία του λαβύρινθου, ώστε ο πράκτορας να έχει πλήρη επίγνωση του περιβάλλοντος! δηλ. να αποθηκευτούν οι θέσεις του S, των G, των κενών, των X, των D. Πως μπορεί να γίνει αυτό? Με δυσδιάστατο πίνακα? Με μονοδιάστατο πίνακα? Με διασυνδεδεμένες λίστες? Σε άλλη δομή? Όπως θέλετε... Η αρχικοποίηση της δομής μπορεί να γίνει είτε διαβάζοντας από αρχείο (για να είναι το πρόγραμμα πιο γενικό) είτε κατευθείαν μέσα στον κώδικα ΤΜΗΜΑ ΜΠΕΣ

Θέματα Υλοποίησης Πως θα αναπαρασταθεί η αρχική κατάσταση? Είναι απαραίτητο να αποθηκεύεται η θέση όλων των Χ και D? Ή μήπως αρκεί κάτι πιο απλό? Πως θα αναπαρασταθούν οι υπόλοιπες καταστάσεις? παρομοίως? Πως θα υλοποιηθεί το τεστ στόχου? πρέπει να ελέγξετε αν η τρέχουσα κατάσταση και η κατάσταση στόχου ταυτίζονται Πως θα υλοποιηθούν οι κόμβοι του δέντρου αναζήτησης και το μέτωπο αναζήτησης? κλάσεις? structs? ουρά Πως θα γίνει η αποφυγή επαναλαμβανόμενων καταστάσεων? ΤΜΗΜΑ ΜΠΕΣ

Κόμβοι του δέντρου αναζήτησης Οι κόμβοι του δέντρου αναζήτησης μπορούν γενικά να αναπαρασταθούν με μια δομή δεδομένων (κλάση ή struct) με 4 συστατικά: ΚΑΤΑΣΤΑΣΗ η κατάσταση στην οποία αντιστοιχεί ο κόμβος (τι είπαμε ότι είναι?) ΠΑΤΡΙΚΟΣ ΚΟΜΒΟΣ ένας δείκτης στον κόμβο που δημιούργησε τον συγκεκριμένο κόμβο ΕΝΕΡΓΕΙΑ η ενέργεια που εφαρμόστηκε για τη δημιουργία του κόμβου (είναι απαραίτητο να γνωρίζουμε την ενέργεια?) ΚΟΣΤΟΣ ΜΟΝΟΠΑΤΙΟΥ το κόστος του μονοπατιού από την αρχική κατάσταση ως τον συγκεκριμένο κόμβο ΒΑΘΟΣ το πλήθος των κόμβων στο μονοπάτι από τη ρίζα ως τον συγκεκριμένο ΤΜΗΜΑ ΜΠΕΣ

Το Μέτωπο Αναζήτησης (fringe or frontier) Το σύνολο των κόμβων που περιμένουν επέκταση ονομάζεται μέτωπο αναζήτησης. Μπορεί να υλοποιηθεί με μια ουρά με τις παρακάτω λειτουργίες: MakeQueue (Elements) Δημιουργεί μια ουρά με τα δεδομένα στοιχεία Empty? (Queue) επιστρέφει true αν δεν υπάρχουν στοιχεία στην ουρά RemoveFront (Queue) βγάζει το πρώτο στοιχείο της ουράς Queuing-Fn (Elements, Queue) συνάρτηση που εισάγει ένα σύνολο στοιχείων στην ουρά διαφορετικές παραλλαγές της συνάρτησης δίνουν διαφορετικούς αλγόριθμους αναζήτησης ΤΜΗΜΑ ΜΠΕΣ

Γενικός Αλγόριθμος Αναζήτησης function TreeSearch (problem, Queuing-Fn) returns a solution or failure fringe  MakeQueue(MakeNode(IninitialState[problem])) loop do if fringe is empty then return failure node  RemoveFront(fringe) if GoalTest[problem] applied to State[node] succeeds then return node fringe  Queuing-Fn(fringe,Expand(node, problem)) end Η συνάρτηση Expand υπολογίζει τους κόμβους που παράγονται από μια επέκταση ΤΜΗΜΑ ΜΠΕΣ

Γενικός Αλγόριθμος Αναζήτησης function Expand (node, problem) returns a set of nodes successors  the empty set for each <action,result> in Successor-fn[problem][State[node]) do s  a new node State[s]  result Parent-Node[s]  node Action[s]  action Path-Cost[s]  Path-Cost[node] + Step-Cost(node,action,s) Depth[s]  Depth[node] + 1 add s to successors return successors ΤΜΗΜΑ ΜΠΕΣ

Γενικά για την Υλοποίηση Για τον BFS μπορείτε να χρησιμοποιήσετε μια fist-in-first-out ουρά Ο IDS είναι DFS μέσα σε ένα loop που αυξάνει το όριο αναζήτησης κάθε φορά που αρχίζει η εκτέλεση του loop ξεκινάει από την αρχή. Ότι πληροφορία υπήρχε από την προηγούμενη εκτέλεση χάνεται. Για τον DFS μπορείτε να χρησιμοποιήσετε μια last-in-first-out ουρά Για την αποφυγή επαναλαμβανόμενων καταστάσεων πρέπει στην περίπτωση του DFS να ελέγχετε αν ο τρέχων κόμβος βρίσκεται ήδη στη μνήμη γενικά, να κρατάτε στη μνήμη το σύνολο των καταστάσεων που έχουν ήδη επεκταθεί (κλειστή λίστα) π.χ. χρησιμοποιώντας μια λίστα όπου τις προσθέτετε ΤΜΗΜΑ ΜΠΕΣ