Αναζήτηση χωρίς πληροφόρηση
1. Κωδικοποίηση γραφήματος
Παράδειγμα ανάγνωσης ενός γραφήματος από αρχείο κειμένου καθώς και παρουσίασης της πληροφορίας του γραφήματος.
Μεταγλώττιση
g++ lab01_graph.cpp lab01_01.cpp -o lab01_01 -Wall -std=c++11
Εκτέλεση για τη φόρτωση του αρχείου tour_romania.txt από τον κατάλογο data
./lab01_01 data/tour_romania.txt
Έξοδος
Vertices=20
Vertex Arad(A)
Vertex Bucharest(B)
…
Vertex Zerind(Z)
Edges=46
Arad(A)--140-->Sibiu(S)
8
Arad(A)--118-->Timisoara(T)
…
Zerind(Z)--71-->Oradea(O)
2. Υλοποίηση βασικών μορφών των αλγορίθμων αναζήτησης πρώτα κατά βάθος (DFS) και αναζήτησης πρώτα κατά πλάτος (BFS)
Αναζήτηση πρώτα κατά βάθος (DFS) και αναζήτηση πρώτα κατά πλάτος (BFS) χωρίς να αποθηκεύεται η διαδρομή που εντοπίζει ο αλγόριθμος. Εμφανίζει τις πόλεις οι οποίες εξετάζονται κατά την αναζήτηση και εφόσον βρεθεί ο προορισμός το μήκος της διαδρομής όπως έχει εντοπιστεί από τον αλγόριθμο.
Μεταγλώττιση
g++ lab01_graph.cpp lab01_search_simple.cpp lab01_02.cpp -o lab01_02 -std=c++11
Εκτέλεση για την εφαρμογή του αλγορίθμου BFS στο αρχείο tour_romania.txt για τη μετάβαση από την πόλη C στην πόλη Β
./lab01_02 data/tour_romania.txt C B bfs
Έξοδος
BREADTH FIRST SEARCH
Starting from node C
current state: D
current state: P
current state: R
current state: C
current state: M
current state: B
Path to goal node B found with length 239
3. Υλοποίηση αλγορίθμων BFS, DFS και ομοιόμορφης αναζήτησης (UCS) με ταυτόχρονη αποθήκευση της διαδρομής από την αφετηρία προς τον προορισμό
Μεταγλώττιση
g++ lab01_graph.cpp lab01_search.cpp lab01_03.cpp -o lab01_03 -std=c++11
Εκτέλεση για την εφαρμογή του αλγορίθμου BFS στο αρχείο tour_romania.txt για τη μετάβαση από την πόλη C στην πόλη Β
./lab01_03 data/tour_romania.txt C B bfs
Έξοδος
BREADTH FIRST SEARCH
frontier:[(C)] closed set:[] current node:C successors:[D P R]
frontier:[(C-D)(C-P)(C-R)] closed set:[C] current node:D successors:[C M]
frontier:[(C-P)(C-R)(C-D-C)(C-D-M)] closed set:[C D] current node:P successors:[B C R]
frontier:[(C-R)(C-D-C)(C-D-M)(C-P-B)(C-P-C)(C-P-R)] closed set:[C D P] current node:R successors:[C P S]
frontier:[(C-D-C)(C-D-M)(C-P-B)(C-P-C)(C-P-R)(C-R-C)(C-R-P)(C-R-S)] closed set:[C D P R] current node:C successors:[loop]
frontier:[(C-D-M)(C-P-B)(C-P-C)(C-P-R)(C-R-C)(C-R-P)(C-R-S)] closed set:[C D P R] current node:M successors:[D L]
frontier:[(C-P-B)(C-P-C)(C-P-R)(C-R-C)(C-R-P)(C-R-S)(C-D-M-D)(C-D-M-L)] closed set:[C D M P R] current node:B successors:[F G P U]
Path to goal node found: (Craiova-Pitesti-Bucharest 239)
Εκτέλεση για την εφαρμογή του αλγορίθμου DFS στο αρχείο tour_romania.txt για τη μετάβαση από την πόλη C στην πόλη Β
./lab01_03 data/tour_romania.txt C B dfs
Έξοδος
DEPTH FIRST SEARCH
frontier:[(C)] closed set:[] current node:C successors:[D P R]
frontier:[(C-D)(C-P)(C-R)] closed set:[C] current node:D successors:[C M]
frontier:[(C-D-C)(C-D-M)(C-P)(C-R)] closed set:[C D] current node:C successors:[loop]
frontier:[(C-D-M)(C-P)(C-R)] closed set:[C D] current node:M successors:[D L]
frontier:[(C-D-M-D)(C-D-M-L)(C-P)(C-R)] closed set:[C D M] current node:D successors:[loop]
frontier:[(C-D-M-L)(C-P)(C-R)] closed set:[C D M] current node:L successors:[M T]
frontier:[(C-D-M-L-M)(C-D-M-L-T)(C-P)(C-R)] closed set:[C D L M] current node:M successors:[loop]
frontier:[(C-D-M-L-T)(C-P)(C-R)] closed set:[C D L M] current node:T successors:[A L]
frontier:[(C-D-M-L-T-A)(C-D-M-L-T-L)(C-P)(C-R)] closed set:[C D L M T] current node:A successors:[S T Z]
frontier:[(C-D-M-L-T-A-S)(C-D-M-L-T-A-T)(C-D-M-L-T-A-Z)(C-D-M-L-T-L)(C-P)(C-R)] closed set:[A C D L M T] current node:S successors:[A F O R]
frontier:[(C-D-M-L-T-A-S-A)(C-D-M-L-T-A-S-F)(C-D-M-L-T-A-S-O)(C-D-M-L-T-A-S-R)(C-D-M-L-T-A-T)(C-D-M-L-T-A-Z)(C-D-M-L-T-L)(C-P)(C-R)] closed set:[A C D L M S T] current node:A successors:[loop]
frontier:[(C-D-M-L-T-A-S-F)(C-D-M-L-T-A-S-O)(C-D-M-L-T-A-S-R)(C-D-M-L-T-A-T)(C-D-M-L-T-A-Z)(C-D-M-L-T-L)(C-P)(C-R)] closed set:[A C D L M S T] current node:F successors:[B S]
frontier:[(C-D-M-L-T-A-S-F-B)(C-D-M-L-T-A-S-F-S)(C-D-M-L-T-A-S-O)(C-D-M-L-T-A-S-R)(C-D-M-L-T-A-T)(C-D-M-L-T-A-Z)(C-D-M-L-T-L)(C-P)(C-R)] closed set:[A C D F L M S T] current node:B successors:[F G P U]
Path to goal node found: (Craiova-Drobeta-Mehadia-Lugoj-Timisoara-Arad-Sibiu-Fagaras-Bucharest 944)
Εκτέλεση για την εφαρμογή του αλγορίθμου UCS στο αρχείο tour_romania.txt για τη μετάβαση από την πόλη C στην πόλη Β
./lab01_03 data/tour_romania.txt C B ucs
Έξοδος
UNIFORM COST SEARCH
frontier:[(C 0)] closed set:[] current node:C successors:[D P R]
frontier:[(C-D 120)(C-P 138)(C-R 146)] closed set:[C] current node:D successors:[C M]
frontier:[(C-P 138)(C-R 146)(C-D-M 195)(C-D-C 240)] closed set:[C D] current node:P successors:[B C R]
frontier:[(C-R 146)(C-D-M 195)(C-P-R 235)(C-P-B 239)(C-D-C 240)(C-P-C 276)] closed set:[C D P] current node:R successors:[C P S]
frontier:[(C-D-M 195)(C-R-S 226)(C-P-R 235)(C-P-B 239)(C-D-C 240)(C-R-P 243)(C-P-C 276)(C-R-C 292)] closed set:[C D P R] current node:M successors:[D L]
frontier:[(C-R-S 226)(C-P-R 235)(C-P-B 239)(C-D-C 240)(C-R-P 243)(C-D-M-L 265)(C-D-M-D 270)(C-P-C 276)(C-R-C 292)] closed set:[C D M P R] current node:S successors:[A F O R]
frontier:[(C-P-R 235)(C-P-B 239)(C-D-C 240)(C-R-P 243)(C-D-M-L 265)(C-D-M-D 270)(C-P-C 276)(C-R-C 292)(C-R-S-R 306)(C-R-S-F 325)(C-R-S-A 366)(C-R-S-O 377)] closed set:[C D M P R S] current node:R successors:[loop]
frontier:[(C-P-B 239)(C-D-C 240)(C-R-P 243)(C-D-M-L 265)(C-D-M-D 270)(C-P-C 276)(C-R-C 292)(C-R-S-R 306)(C-R-S-F 325)(C-R-S-A 366)(C-R-S-O 377)] closed set:[C D M P R S] current node:B successors:[F G P U]
Path to goal node found: (Craiova-Pitesti-Bucharest 239)
Μεταγλώττιση και εκτέλεση όλων των παραδειγμάτων με makefile
make
Εκτέλεση παραδείγματος 1 (tour_romania.txt)
make run1
Εκτέλεση παραδείγματος 2 (tour_romania.txt, BFS, Arad–>Bucharest)
make run2
Εκτέλεση παραδείγματος 3 (tour_romania.txt, BFS, Arad–>Bucharest)
make run3
Διαγραφή των εκτελέσιμων
make clean
Ασκήσεις
Μεταγλώττιση όλων των ασκήσεων με makefile
make -f exercises.mk
Εκτέλεση άσκησης 2
make -f exercises.mk exercise02
Εκτέλεση άσκησης 3
make -f exercises.mk exercise03
Εκτέλεση άσκησης 4
make -f exercises.mk exercise04
Εκτέλεση άσκησης 6
make -f exercises.mk exercise06
Εκτέλεση άσκησης 8
make -f exercises.mk exercise08