Γραφήματα (Graphs) To Δένδρο, ειδική περίπτωση γραφήματος. G = (V, E) Κορυφές V και ακμές E G 2 4. μονοπάτι 1, 2, 3, 4 κορυφή 3

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Γραφήματα (Graphs) To Δένδρο, ειδική περίπτωση γραφήματος. G = (V, E) Κορυφές V και ακμές E G 2 4. μονοπάτι 1, 2, 3, 4 κορυφή 3"

Transcript

1 G = (V, E) Κορυφές V και ακμές E V(G ) = {,,3,, Γραφήματα (Graphs) G E(G ) = {(,), (,3), (,), (3,), (,) μονοπάτι,, 3, κορυφή 3 ακμή γειτονικές To Δένδρο, ειδική περίπτωση γραφήματος G μήκος μονοπατιού (διαδρομή από κόμβο έως κόμβο) κύκλος (μονοπάτι από έναν κόμβο στον εαυτό του) αν δεν υπάρχει κύκλος τότε ακυκλικό (πχ Δένδρο) συνδεδεμένο (αν για ζεύγη κόμβων υπάρχει μονοπάτι) βαθμός κόμβου (ο αριθμός των ακμών) Κατευθυνόμενο γράφημα ακμές με κατεύθυνση (μονόδρομος) V(G 3 ) = {,,3, E(G 3 ) = {<,>, <,3>, <3,>, <,> 3 Ο ΑΤΔ Γράφημα και οι υλοποιήσεις του Ο ΑΤΔ γράφημα G = (V, E) αποτελείται από ένα σύνολο V (κορυφές), μια σχέση Ε (ακμές) και πράξεις που επιδρούν πάνω στα δύο αυτά σύνολα G 3 Ισχυρά συνδεδεμένο αν για κάθε ζεύγος κόμβων Vi, Vjυπάρχoυν κατευθυνόμενα μονοπάτια από Vi σε Vj και απόvj σε Vi Το G3 είναι ισχυρά συνδεδεμένο κατευθυνόμενο γράφημα

2 Βασικές πράξεις Δημιουργία γραφήματος: Δημιουργεί ένα κενό γράφημα Γειτονική κορυφή: Ελέγχει αν υπάρχει ακμή μεταξύ δύο κορυφών 3 Ενημέρωση: Τροποποιεί το περιεχόμενο μιας κορυφής Ανάκτηση: Επιστρέφει το περιεχόμενο μιας κορυφής Διαγραφή κορυφής: Διαγράφει μια κορυφή από το γράφημα μαζί με τις ακμές που περιέχουν την κορυφή αυτή 6 Διαγραφή ακμής: Διαγράφει μια ακμή από το γράφημα 7Εισαγωγή κορυφής: Εισάγει μια κορυφή στο γράφημα, χωρίς τη σύνδεσή της με άλλες κορυφές 8 Εισαγωγή ακμής: Εισάγει μια ακμή στο γράφημα Υλοποίηση του ΑΤΔ Γράφημα με πίνακα G 3 κατασκευή γειτονικού πίνακα (πίνακας γειτνίασης): αν κορυφές i,j γειτονικές A[i,j]= αλλιώς 0 (για μη-κατευθυνόμενα οι πίνακες είναι συμμετρικοί) Ο γειτονικός πίνακας ενός γραφήματος δεν είναι μονοσήμαντα ορισμένος, αφού η κατασκευή του εξαρτάται από την αρίθμηση των κορυφών του γραφήματος #define plithos 00 Υλοποίηση με Πίνακα typedef struct { int geit_pin[plithos][plithos]; int arkrfon ; // ο πραγματικός αριθμός κορυφών graphima; graphima G; G 3 3 Γειτονικός πίνακας κατευθυνόμενου γραφήματος

3 /*Δημιουργία κενού γραφήματος (μερική απόκρυψη)*/ void dimiourgia(graphima *G){ G->arkrfon = 0; int geitoniki(graphima G, korifi p, korifi q){ /* Eλέγχει αν οι (p,q) είναι γειτονικές στο μη κατευθυνόμενο γράφημα G */ if( (p < 0) (p > Garkrfon-) (q < 0) (q > Garkrfon-)) return -; /* Λάθος κορυφή */ else return (Ggeit_pin[p][q]); int diagrafi_akmis(graphima *G, korifi p, korifi q){ /* Προ: H (p,q) είναι ακμή του μη κατευθυνόμενου γραφήματος *G Mετά: Aν οι κορυφές p,q δεν ανήκουν στο σύνολο των κορυφών του γραφήματος *G τότε επιστρέφει-, αλλιώς αν η (p,q) είναι ακμή του γραφήματος *G τότε διαγράφεται η (p,q) από το *G και η συνάρτηση επιστρέφει, αλλιώς η συνάρτηση επιστρέφει 0 */ if ( (p<0) (p > G->arkrfon-) (q<0) (q > G->arkrfon-) ) return -; /* Λάθος κορυφές */ else if (!geitoniki(*g,p,q,)) return 0; else{ G->geit_pin[p][q] = 0; G->geit_pin[q][p] = 0; return ; int eisagogi_akmis(graphima *G, korifi p,korifi q){ /* Προ: Oι κορυφές p,q ανήκουν στο σύνολο κορυφών του *G και η ακμή (p,q) δεν ανήκει στο μη κατευθυνόμενο γράφημα Mετά: Aν οι κορυφές p,q δεν ανήκουν στο σύνολο των κορυφών του *G τότε η συνάρτηση επιστρέφει -, αλλιώς αν η ακμή (p,q) δεν ανήκει στο σύνολο ακμών του *G τότε εισάγεται και η συνάρτηση επιστρέφει, αλλιώς η συνάρτηση επιστρέφει 0 */ if (p<0) (p > G->arkrfon-) (q<0) (q > G->arkrfon-) ) return -; /* Λάθος κορυφές */ else if (geitoniki(*g, p, q)) return 0; else{ G->geit_pin[p][q] = ; G->geit_pin[q][p] = ; return ; 3

4 int eisagogi_korifis(graphima *G, korifi *p){ /* Προ:Tο γράφημα *G δεν έχει το μέγιστο πλήθος κορυφών Mετά: Eισάγεται στο γράφημα *G η κορυφή G->arkrfon χωρίς αυτή να συνδεθεί με άλλες κορυφές, το *p γίνεται ίσο με αυτήν και η συνάρτηση επιστρέφει Aν το *G είχε το μέγιστο πλήθος κορυφών τότε η συνάρτηση επιστρέφει 0 */ korifi i; if (G->arkrfon == plithos) return 0; else{ G->arkrfon++; *p = (G->arkrfon)-; /* Tελευταία κορυφή */ for (i = 0; i <= *p; i++){ G->geit_pin[*p][i] = 0; /*Nέα γραμμή*/ G->geit_pin[i][*p] = 0; /*Nέα στήλη*/ return ; int diagrafi_korifis(graphima *G, korifi p){ /* Προ : H κορυφή p ανήκει στο σύνολο κορυφών του γραφήματος *G Mετά: Aν η κορυφή p ανήκει στο σύνολο κορυφών του γραφήματος *G τότε αυτή διαγράφεται και διαγράφονται και όλες οι ακμές που περιέχουντην κορυφή p και η συνάρτηση επιστρέφει, αλλιώς η συνάρτηση επιστρέφει 0 Mετά από αυτές τις διαγραφές το γράφημα έχει ως κορυφές του τις 0,,, (G->arkrfon)- */ int diagrafi_korifis(graphima *G, korifi p) { korifi i,j; if ( (p<0) (p > (G->arkrfon)-) ) return 0; /* Λάθος κορυφή */ else { /* μετακίνηση i+ γραμμής προς τα πάνω */ for ( i = p; i <= (G->arkrfon)-; i++) for ( j = 0; j <= (G->arkrfon)-; j++) G->geit_pin[i][j]=G->geit_pin[i+][j]; /* μετακίνηση i+ στήλης προς τα αριστερά */ for ( i = p; i <= (G->arkrfon)-; i++) for ( j = 0; j <= (G->arkrfon)-; j++) G->geit_pin[j][i] =G->geit_pin[j][i+]; G->arkrfon--; return ; Ορθογώνια Λίστα (αραιοί πίνακες -8%!=0) 3 Α E Β 3 C D 3

5 κόμβοι κεφαλές 3 Απεικόνιση Αραιού Πίνακα, ως γράφημα G Υλοποίηση του ΑΤΔ Γράφημα με συνδεδεμένες λίστες (κόμβοι και δείκτες) G μονοπάτι,,3, κορυφή 3 ακμή γειτονικές Πίνακας δεικτών 3 Α Λίστα γειτονικών κορυφών του G κόμβοι κορυφών κόμβοι γειτονικών κορυφών B G A E C D 3

6 3 δείκτες E Λίστα γειτονικών κορυφών του G A B D κόμβοι κορυφών C Data Data Data Data Data κόμβοι γειτονικών κορυφών E B C C B D D Οι δηλώσεις στην C για την παράσταση ενός γραφήματος με λίστα γειτονικών κορυφών είναι οι ακόλουθες : #define plithos_korifon typedef typos_dedomenon; /* τδκορυφών */ typedef int arithmos_korifis; typedef struct korifi *kdktis; typedef struct korifi{ /* κόμβος κορυφή */ arithmos_korifis arkorifis; kdktis epomenos ; ; typedef struct kefali *kefdktis; typedef struct kefali{ typos_dedomenon dedomena; kdktis epomenos; ; /* κόμβος ένας για κάθε κορυφή*/ typedef struct{ kefdktis pinakas[plithos_korifon]; int k; /* αριθμός κορυφών */ graphima; graphima G; Β Υλοποίηση Γραφήματος με Λίστα Ακμών 3 Α E 3 C D 3 G 6

7 λίστα κορυφών G Α B C D E λίστα ακμών <DD> <ΑΒ> <ΑC> <BC> <CB> <CD> <ΑE> typedef typos_stoixeiou; /* δεδομένα κορυφής */ typedef struct korifi *kdktis; typedef struct akmi *adktis; typedef struct korifi { typos_stoixeiou dedomena; kdktis epomenos; /* επόμενος λίστας κορυφών*/ adktis kefali; /* δείκτης λίστας ακμών */ ; typedef struct akmi { typos_stoixeiou dedomena; /* δεδομένα ακμής πχ βάρος, απόσταση*/ kdktis akro; /* άκρο ακμής */ adktis epomenos; /* επόμενος λίστας ακμών */ ; typedef kdktis graphima; graphima G; /*Δημιουργία κενού γραφήματος*/ void dimiourgia(graphima *G){ *G = NULL; int geitoniki(kdktis p, kdktis q){ int telos; adktis trexon; /*για τη σάρωση της λίστας ακμών */ int geit=0; void enimerosi(typos_stoixeiou stoixeio, kdktis p){ /* Mετά:Eισάγει το stoixeio στον κόμβο που δείχνει ο p */ p->dedomena = stoixeio; typos_stoixeiou anaktisi(kdktis p){ /* Mετά: H συνάρτηση επιστρέφει το περιέχομενο του κόμβου που δείχνει δείκτης p */ return (p->dedomena); trexon = p->kefali; /* αφετηρία από την κεφαλή */ telos = 0; while (!telos){ if (trexon == NULL) /* τέλος λίστας ακμών */ telos = ; else if ( trexon->akro == q ){ /* βρέθηκε */ telos = ; geit = ; else /*επόμενος κόμβος λίστας ακμών */ trexon = trexon->epomenos; return geit; 7

8 void diagrafi_korifis(kdktis p,graphima *G){ /* Mετά: H κορυφή που δείχνει ο p διαγράφεται */ kdktis trexon; trexon = *G; /* διατρέχει τη λίστα κορυφών */ while (!keni (trexon)){ /* δεν εξετάζεται η λίστα του p */ if (trexon! = p) /* διαγραφή της (trexon,p)*/ diagrafi_komvou(p,&(trexon->kefali)); proxorise (&trexon)/* στην επόμενη κορυφή*/ /* διαγραφή της λίστας ακμών της p */ diagrafi_listas(&(p->kefali)); /* βοηθητική */ diag_kor(p,g); /*διαγραφή κορυφής p */ void diagrafi_komvou(kdktis v, adktis *kefali) /* Mετά: Eντοπίζει και διαγράφει τον κόμβο της λίστας ακμών που ξεκινά απο τον *kefali του οποίου το πεδίο akro είναι ίσο με v */ adktis pros; if (*kefali!= NULL){ if (((*kefali)->akro) == v) /* Διαγραφή του κόμβου */ { pros = *kefali; *kefali = (*kefali)->epomenos; free(pros); else diagrafi_komvou(v, &((*kefali)->epomenos)); void diagrafi_listas(adktis* kefali){ /* Mετά: Διαγράφει όλους τους κόμβους μιας λίστας ακμών ξεκινώντας από την κεφαλή */ if (*kefali!=null){ diagrafi_listas(&((*kefali)->epomenos)); free (*kefali); *kefali = NULL; void eisagogi_korifis(graphima *G, typos_stoixeiou stoixeio) {/* Mετά: Eισάγεται ένας νέος κόμβος στην αρχή της λίστας κορυφών με δεδομένα stoixeio */ kdktis p; p = malloc(sizeof(struct korifi)); /* Συνδέει το νέο κόμβο με την κεφαλή της λίστας κορυφών του *G */ p->dedomena = stoixeio; p->epomenos = *G; p->kefali = NULL; /* Λίστα ακμών του p είναι κενή*/ /* O κόμβος που δείχνει ο p είναι η νέα κεφαλή της λίστας κορυφών του *G */ *G = p; 8

9 p q Εισαγωγή Ακμής: μη κατευθυνόμενο (όπως εισαγωγή αρχή λίστας) void eisagogi_akmis(kdktis p,kdktis q){ /* Mετά: Eισάγεται μια ακμή μεταξύ των κορυφών που δείχνουν οι p και q, σε ένα μη κατευθυνόμενο γράφημα */ adktis pros; if (!geitoniki(p,q)){ pros = p->kefali; p->kefali = malloc(sizeof(struct akmi)); /* Εισαγωγή στην αρχή & σύνδεση με q */ p->kefali->akro = q; p->kefali->epomenos = pros; /* Eπαναλαμβάνονται τα παραπάνω για το q */ pros = q->kefali; q->kefali = malloc(sizeof(struct akmi)); q->kefali->akro = p; q->kefali->epomenos = pros; Διαδρομή (ή Αναζήτηση) Γραφημάτων Διαδρομή πρώτα κατά βάθος Διαδρομήπρώτα κατά πλάτος Διαδρομή πρώτα κατά βάθος αφετηρία B C F G Μια πρώτα κατά βάθος σειρά, ξεκινώντας από την κορυφή Α, είναι : ABFIHGCDE B Α C D αφετηρία A D I E F H G Μια διαδρομή πρώτα κατά βάθος είναι ΑBEFHCDG E H Ξεκινώντας από την Β ποτέ σε Α και Ε Πρέπει όμως να επισκεφτούμε όλες 9

10 Αλγόριθμος Διαδρομής πρώτα κατά βάθος (ισχυρά συνδεδεμένου) Επισκέπτεται όλες τις κορυφές ενός γραφήματος που είναι συνδεδεμένες με την κορυφή v από την οποία ξεκινά, με την πρώτα κατά βάθος αναζήτηση Επίσκεψη της αρχικής κορυφής v Για κάθε γειτονική κορυφή w της v γίνονται τα εξής: Αν δεν έχουμε επισκεφτείτην w,εφαρμόζεται ο αλγόριθμος της αναζήτησης πρώτα κατά βάθος με αρχική κορυφή την w προβλήματα Π Ενα γράφημα μπορεί να περιέχει κύκλους, πράγμα που σημαίνει ότι είναι δυνατόν να επισκεφθούμε μία κορυφή περισσότερες από μία φορέςγια αυτό μαρκάρουμε τις κορυφές που επισκεπτόμαστε και ελέγχουμε αν τις έχουμε ξαναεπισκεφθεί Π Το άλλο φαινόμενο που μπορεί να παρουσιαστεί είναι εκείνο του μη συνδεδεμένου (για μη κατευθυνόμενο) ή μη ισχυρά συνδεδεμένου (για κατευθυνόμενο)γραφήματοςγια αυτό ξεκινάμε Διαδρομή από κάθε κορυφή του γραφήματος και αν δεν την έχουμε ξαναεπισκεφθεί ξεκινάμε νέα Διδρομή Η Διαδρομήπρώτα κατά βάθος περιγράφεται από τα παρακάτω δυο υποπρογράμματασε ψευδογλώσσα για να καλύπτει αφαιρετικά και τις τρεις υλοποιήσεις των γραφημάτων Στην συνέχεια τα εξειδικεύουμε για κάθε υλοποίηση /* ψευδοκώδικας κατά βάθος για όλες τις υλοποιήσεις */ int episkeftike[plithos]; /* Πίνακας Επισκέψεων */ void vathos(graphima G){ int i; for (i=0;i<plithos;i++)do episkeftike[k] = 0; Για κάθε κορυφή στο G /* ψευδοκώδικας */ if (!episkeftike[k]) diadromi_vathos(k); /*Προ: k είναι κορυφή του γραφήματος G Μετά: Εχει εκτελεστεί η πρώτα κατά βάθος διαδρομή, με τη χρήση του υποπρογράμματος episkepsi για την k και για όλες τις γειτονικές της κορυφές*/ /* Αναδρομικός ψευδοκώδικας για όλες τις υλοποιήσεις*/ void diadromi_vathos(korifi k){ korifi w; episkepsi(k); episkeftike[k] = ; Προσοχή! Ξεκινάμε κατά βάθος από κάθε κορυφή Αν την έχουμε επισκεφτεί έχοντας ξεκινήσει από άλλη κορυφή, δεν την επισκεπτόμαστε Επισκεπτόμαστε ΟΛΟΥΣ τους κόμβους Για κάθε w γειτονικό του k /* ψευδοκώδικας */ if (!episkeftike[w]) diadromi_vathos(w); 0

11 Εξειδίκευση: η υλοποίηση της Διαδρομής πρώτα κατά βάθος στην περίπτωση όπου το γράφημα παριστάνεται με γειτονικό πίνακα int episkeftike[plithos]; /*Προ: Εχει δημιουργηθεί ο γειτονικός πίνακας Μετά: Επίσκεψη όλων των κορυφών του γραφήματος με τη μέθοδο της αναζήτησης πρώτα κατά βάθος*/ void vathosp(graphima G){ korifi i; for (i=0; i<=(garkrfon-); i++) episkeftike[i] = 0; for (i=0; i<=(garkrfon-); i++) if (!episkeftike[i]) diadromi_vathosp(g,i); /*Προ: i είναι μια κορυφή του γραφήματος Μετά: Η επίσκεψη της κορυφής i και των γειτονικών της έχειτελειώσει με την αναζήτηση πρώτα κατά βάθος*/ void diadromi_vathosp(graphima G, korifi i){ int j; episkepsi(i); /*επίσκεψη της i κορυφής*/ episkeftike[i] = ; for (j=0; j<= Garkrfon-; j++) if (geitoniki(g,i,j) && (!episkeftike[j])) diadromi_vathosp(g,j); Εξειδίκευση: το γράφημα παριστάνεται με τη λίστα ακμών Κάθε κόμβος περιέχει ένα boolean πεδίο episkeftike, το οποίο αρχικά έχειτεθείίσομε falseγιακάθεκορυφή void diadromi_vathosla(kdktis p){ /* Ο δείκτης p δείχνει την κορυφή αφετηρίας */ adktis trexon; kdktis q; episkepsi(p); p->episkeftike = ; Η diadromi τροποποιείται ως εξής: trexon=p->kefali; while (trexon!=null){ q=trexon->akro; /* η q γειτονική της p */ if (!(q->episkeftike)) diadromi_vathosla(q); trexon = trexon->epomenos;

12 Πολυπλοκότητα Διαδρομής κατά βάθος Γειτονικός Πίνακας : Ο(n ), επειδή Ο(n) για γειτονικές x n Λίστα γειτονικών κορυφών : Ο(e) (το πολύ e κόμβοι) Λίστα ακμών : Ο(n+e) Συνήθως e << n Οι υλοποιήσεις με λίστες έχουν πιο αποδοτικές αναζητήσεις Η υλοποίηση με πίνακα χρησιμοποιείται σε αλγεβρικούς υπολογισμούς με πίνακες (μετάβασης) Αναζήτηση πρώτα κατά πλάτος Η αναζήτηση πρώτα κατά πλάτος ενός γραφήματος είναι ανάλογη με την επίσκεψη των κόμβων ενός δυαδικού δέντρου κατά επίπεδα ή βαθμό απομάκρυνσης από τον αρχικό κόμβο Τοποθετούμε αρχική κορυφή σε ουρά Εξάγουμε την πρώτη κορυφή από την ουρά και την επισκεπτόμαστε 3 Τοποθετούμε κάθε γειτονική της κορυφή, αν δεν την έχουμε επισκεφτεί ήδη, στην ουρά καιπάλιτο Αναζήτηση πρώτα κατά πλάτος Α Ουρά B F Από A: A B D E F C H G I (όλες) A A B-C-D B C-D-E-F C G Β C D E F G C D-E-F D E-F-G E F-G αφετηρία A D I H A B C D E F G H F G-H G H H E H Από B: B F G I H C D Όμως συνεχίζουμε από A E

13 Ο αλγόριθμος της αναζήτησης πρώτα κατά πλάτος είναι παρόμοιος με εκείνον της αναζήτησης πρώτα κατά βάθος με τη διαφορά ότι τώρα προστίθεται η δημιουργία της ουράς των κορυφών και καλεί diadromi_platos typedef korifi typos_stoixeiou; typos_oura oura_korifon; int episkeftike[plithos]; Όλες οι αλλαγές βρίσκονται στον αλγόριθμο του τρόπου επίσκεψης των κορυφών Πιο συγκεκριμένα ο αλγόριθμος της διαδρομής των κορυφών του γραφήματος τροποποιείται στον παρακάτω: void platos(graphima G){ korifi k; for all k in G do episkeftike[k] = 0; dimiourgia(&oura_korifon); for all k in G do if (!episkeftike[k]) diadromi_platos(k); Επαναληπτικός αλγόριθμος void diadromi_platos(korifi k){ /*Προ: k είναι η κορυφή του γραφήματος Μετά: Έχει εκτελεστεί η κατά πλάτος διαδρομή */ Εξειδίκευση: το γράφημα παριστάνεται με τη λίστα ακμών, τότε υποθέτουμε ότι κάθε κόμβος περιέχει ένα boolean πεδίο episkeftike, το οποίο αρχικά έχει τεθεί ίσο με false για κάθε κορυφή Η δε διαδρομή τροποποιείται ως εξής: korifi w,i; episkeftike[k] = ; prosthesi(&oura_korifon,k); while (!keni(oura_korifon)){ apomakrynsi(&oura_korifon,&i); episkepsi(i); for all w adjacent to i do /* ψευδοκώδικας */ if (!episkeftike[w]){ episkeftike[w] = ; prosthesi(&oura_korifon,w); /*Ο δείκτης p δείχνει την κορυφή-αφετηρία Προ: Το γράφημα G έχει δημιουργηθεί Μετά: Εχει εκτελεστεί η κατά πλάτος διαδρομή όλων των κορυφών του γραφήματος Χρήση: Οι βασικές πράξεις της ουράς*/ 3

14 void diadromi_platosla(kdktis p){ adktis trexon; kdktis q,i; p->episkeftike = ; prosthesi(&oura_korifon, p); while (!(keni(oura_korifon))){ apomakrynsi(&oura_korifon, &i); episkepsi(i); trexon=i->kefali; while (trexon!=null){ q=trexon->akro;/* q γειτονική p*/ if (!(q->episkeftike)){ q->episkeftike = ; prosthesi(&oura_korifon,q); trexon=trexon->epomenos; Δέντρα Επικάλυψης (Spanning Trees) Εναδέντροεπικάλυψηςγιαέναγράφημα G,είναιέναδέντροπουέχει δημιουργηθεί από μερικές ακμές του G έτσι ώστε να περιέχει όλες τις κορυφές του Με άλλα λόγια ένα δέντρο επικάλυψης είναι ένα γράφημα με το ελάχιστο πλήθος ακμών που επιτρέπει την επικοινωνία μεταξύ οποιονδήποτε κορυφών του γραφήματος Ενα δέντρο επικάλυψης με πρώτα κατά βάθος επίσκεψη των κορυφών του Αφετηρία η κορυφή a a b g a e i b c c d e h g d f j j h f i αφετηρία b g a e i c h d f j

15 Στη συνέχεια η vathos τροποποιείται κατάλληλα για τον εντοπισμό των ακμών ενός πρώτα κατά βάθος δέντρου επικάλυψης /*Δημιουργεί ένα κατά βάθος δέντρο επικάλυψης*/ void vathos_spantree(graphima G){ kdktis p; adktis e; p = G; /*Αρχικές τιμές - δίνονται αρχικές τιμές σε όλα τα σημάδια επισκέπτονται όλες οι κορυφές του G και σημαδεύεται η κάθε ακμή ώστε αρχικά να μην ανήκειστο δέντρο επικάλυψης*/ συνέχεια while (p!=null){ /*αρχικά οι κορυφές δεν έχουμε επισκεφτεί p->episkeftike = 0; e = p->kefali; /*επισκέπτεται τη λίστα ακμών για κάθε κορυφή καισημαδεύεται η κάθε ακμή, ώστε αρχικά να μην ανήκει στο δέντρο επικάλυψης*/ while (e!=null){ e->simadi = 0; e = e->epomenos; p = p->epomenos; p = G; vathos_dimiourgia(p); void vathos_dimiourgia(kdktis p){ adktis trexon; kdktis q; p->episkeftike = ; trexon = p->kefali; while (trexon!=null){ q= trexon->akro; if (!(q->episkeftike)){ /* σημαδεύεται η ακμή του δέντρου*/ trexon->simadi = ; /*θα μπορούσαμε να τυπώσουμε την ακμή του δέντρου στο σημείο*/ vathos_dimiourgia(q); trexon = trexon->epomenos; Με όμοιο τρόπο τροποποιείται η platos και κατασκευάζεται ένα πρώτα κατά πλάτος δέντρο επικάλυψης ενός γραφήματος G void platos_spantree(graphima G){ /*Δημιουργεί ένα κατά πλάτος δέντρο επικάλυψης */ typos_ouras oura; kdktis n,m; adktis trexon; n = G; while (n!=null){ n->episkeftike = 0; trexon = n->kefali; while (trexon!=null){ trexon->simadi = 0; trexon = trexon->epomenos; n = n->epomenos; συνέχεια

16 dimiourgia(&oura); /*Το ξεκίνημα από την κεφαλή της λίστας κορυφών*/ n = G; prosthesi(&oura,n); n->episkeftike = ; while (!keni(oura)){ apomakrynsi(&oura,&n); /* επισκέπτεται η λιστά ακμών */ trexon = n->kefali; while (trexon!=null){ m = trexon->akro; if (!(m->episkeftike)){ prosthesi(&oura,m); m->episkeftike = ; trexon->simadi = ; trexon = trexon->epomenos; Ενα πρώτα κατά πλάτος δέντρο επικάλυψης του γραφήματος Αφετηρία η κορυφή a αφετηρία a c b e d f j g h i Μεταβατικό γράφημα : Εφαρμογές Γραφημάτων Γενικά : Υπάρχει μονοπάτι μήκους <= 3 ; Υπαρξη μονοπατιού 6

17 Β Α E C D Γειτονικός πίνακας ή Μεταβατικός πίνακας βημάτων Μεταβατικός Πίνακας / Γράφημα Γράφημα που συνδέει κορυφές που γειτνιάζουν με οποιοδήποτε αριθμό μεταβάσεων (n) Και ο πίνακας γειτνίασής του λέγεται μεταβατικός πίνακας Πχ για το παραπάνω γράφημα ο μεταβατικός πίνακας είναι: O(n 3 ) Αλγόριθμος Warshall Μεταβατικού Πίνακα P k [i, j] = /* TRUE */ Αν υπάρχει μονοπάτι από την i στην j το οποίο να μην διέρχεται από καμία κορυφή μεγαλύτερη του k Ο(n ) 7

18 P k+ [i, j] = /*true*/ AN P k [i, j] = /*true*/ ή P k [i, k+] = και P k [k+, j] = Τα παραπάνω ισοδυναμούν με P k+ [i, j] = (P k [i, j] (P k [i, k+] && P k [k+, j])); ή αναλυτικότερα for (i=;i<=n;i++) for (j=;j<=n;j++) P k [i, j] = P k- [i, j] (P k- [i, k] && P k- [k, j]); Απλοποιώντας τα παραπάνω λαμβάνουμε P k = P k -; for (i=;i<=n;i++) if (P k- [i, k]) for (j=; j<=n; j++) P k [i, j] := P k- [i, j] P k- [k, j]; και τελικά : P k = P k-; for (i=;i<=n;i++) if (P k- [i, k]) for (j=;j<=n;j++) if (P k- [k, j]) P k [i, j] = ; void metavatikos_pinakas(geit_pin A, geit_pin P){ korifi i,j,k; geit_pin PP; for (i=0; i <= plithos-; i++) for (j = 0; j <= plithos-; j++) P[i][j]=A[i][j]; for (k=0; k <= plithos-; k++){ for (i =0 ; i <= plithos-; i++) for (j = 0; j <= plithos-; j++) PP[i][j]=P[i][j]; Ισχύει P 0 [i,j] = A[i,j] for (i=0; i <= plithos-; i++) if (PP[i][k]) for (j=0; j <= plithos-; j++) if (PP[k][j]) P[i][j] = ; 8

19 Το συντομότερο μονοπάτι σε ένα κατευθυνόμενο γράφημα: Ο Αλγόριθμος του Dijkstra Μπορούμε να φανταστούμε το G σαν μια απεικόνιση αεροπορικών γραμμών, στην οποία κάθε κορυφή παριστάνει μια πόλη και το βάρος σε κάθε ακμή το κόστος της πτήσης από μια πόλη σε μιαν άλλη Το πρόβλημά μας είναι η εύρεση μιας διαδρομής από την πόλη vστηνπόλη wέτσιώστετοσυνολικόκόστος (απόσταση)ναείναι ελάχιστο Ένα κατευθυνόμενο γράφημα με βάρη Αλγόριθμος του Dijkstra Ας θεωρήσουμε το κατευθυνόμενο γράφημα του παραπάνω σχήματος Αν υποτεθεί ότι η κορυφή είναι η πηγή, τότε το πρόβλημά μας είναι η εύρεση του συντομότερου μονοπατιού από την κορυφή προς όλες τις άλλες κορυφές του γραφήματος ΠαράστασημεπίνακαΑόπουΑ[i][j]είναιτοκόστοςμετάβασηςαπότην iστην j Αν δεν υπάρχει ακμή, Α[i][j]= Διατηρεί σύνολο S με κορυφές των οποίων η συντομότερη διαδρομή από την κορυφή-πηγή είναι γνωστή Σε κάθε βήμα προσθέτει μια κορυφή στο S Πίνακας D (Δ) περιέχει κόστος (μήκος) για κάθε κορυφή του S Πίνακας P (Δ) περιέχει το μονοπάτι - προηγούμενη κάθε κορυφής του S Άπληστος αλγόριθμος /* Υπολογίζει το κόστος του συντομότερου μονοπατιού από τηνκορυφή μέχρι μια οποιαδήποτε κορυφή ενός κατευθυνόμενου γραφήματος */ () S = {; /*Το σύνολο S περιέχει την κορυφή */ () for i=,n do D[i] = A[,i]; {Αρχικές τιμές του D (3) for i=,n do P[i] = 0 αν δεν υπάρχει ακμή από την προς την i P[i] = αν υπάρχει ακμή από την προς την i () for i = n- do { () Διάλεξε μια κορυφή w εκτός S τέτοια ώστε η D[w] να είναι ελάχιστη (6) Πρόσθεσε την w στο S (7) Για κάθε κορυφή vεκτός S να ελεγχθεί αν η απόσταση απο την στην v μπορεί να συντομευθεί διαμέσου της w Αν ναι, να ενημερωθείη αντίστοιχη τιμή του πίνακα D () D[v] = min (D[v], D[w] + A[w,v]) () Αν D[w]+A[w,v] < D[v] τότε P[v]=w 9

20 S={ min d=30 d= d=0 d=0 S={, d=30 d= min 3 d=0 d=70 d=0 P[] P[] P[3] P[] P[] P[6] 0 Επανάληψη s w D[] D[3] D[] D[] D[6] Επανάληψη s w D[] D[3] D[] D[] D[6] αρχική { {, {, {,, S={,, d=30 d= d=0 3 d= d=0 min P[] P[] P[3] P[] P[] P[6] 0 Επανάληψη s w D[] D[3] D[] D[] D[6] {,, {,,, d=30 d= min d= d=0 d=0 S={,,, P[] P[] P[3] P[] P[] P[6] 0 3 Επανάληψη s w D[] D[3] D[] D[] D[6] 3 {,,, {,,,,

21 S={,,,, 3, 6 d=30 d= d=60 3 d=0 0 d=0 Επανάληψη s w D[] D[3] D[] D[] D[6] {,,,, {,,,,3, s w D[] D[3] D[] D[] D[6] αρχική { {, {,, {,,, {,,,, {,,,,3, Αν αλλάξει D[v] λόγω w P[v]=w Εδώ Αλλαγές για w=,,3 P[3]=, P[3]=,P[6]=3 90 P[] P[] P[3] P[] P[] P[6] Πολυπλοκότης : Ο(n ) S w x Υποθετικά συντομότερο μονοπάτι #include <stdioh> #define plithos 0 #define infinity 0000 /* τιμή όπου δεν υπάρχει ακμή */ #define min_stoixeio 0 #define max_stoixeio plithos- #define megisto_plithos max_stoixeio-min_stoixeio+ typedef int typos_synolou[megisto_plithos]; typedef int korifi; typedef int typos_pinaka[plithos][plithos]; typedef struct { typos_pinaka geit_pin; int arkrfon; graphima; Ο αλγόριθμος του Dijkstra υλοποιείται στο παρακάτω πρόγραμμα όπου χρησιμοποιείται ο πίνακας γειτονικών κορυφών για την παράσταση του γραφήματος συνέχεια

22 void Dimiourgia_graphimatos(graphima *G); void Diavasma_graphimatos(graphima *G); void Ektyposi_graphimatos(graphima G); void Dijkstra(graphima G); void Synolo_dimiourgia(typos_synolou synolo); int Synolo_eisagogi(int stoixeio, typos_synolou synolo); int Synolo_melos(int stoixeio, typos_synolou synolo); main(){ graphima G; printf("\n Δώστε το πλήθος των κορυφών: "); scanf("%d",&(garkrfon)); Dimiourgia_graphimatos(&G); Diavasma_graphimatos(&G); Ektyposi_graphimatos(G); Dijkstra(G); void Dimiourgia_graphimatos(graphima *G){ /* Όλα τα στοιχεία του geit_pin έχουν τιμή infinity */ int i,j; for (i=0; i<=(g->arkrfon)-; i++) for (j=0; j<=(g->arkrfon)-; j++) (G->geit_pin)[i][j] = infinity; void Diavasma_graphimatos(graphima *G){ /* Προ: έχει δημιουργηθεί ο geit_pin χωρίς ακμές Μετά: Έχει δημιουργηθεί ο geit_pin με ακμές*/ korifi i,j; int kostos; printf("\nδώστε τα στοιχεία του γραφήματος"); printf("\nδώστε i,j και kostos\n\n"); scanf ("%d %d %d",&i,&j,&kostos); while (i!= plithos+){ if ( (i>=0) && (i<(g->arkrfon)) &&(j>=0) &&(j<(g->arkrfon)) &&(kostos>=0)&&(kostos < infinity)) (G->geit_pin)[i][j] = kostos; else{ printf("\nλάθος δεδομένα Ξαναδώστε τα"); scanf ("%d %d %d", &i, &j, &kostos); void Ektyposi_graphimatos(graphima G){ /*Προ : Έχει δημιουργηθεί ο γειτονικός πίνακας Μετά: Για κάθε κορυφή έχει τυπωθεί μια γραμμή στην οποία εμφανίζονται οι κορυφές με τις οποίες είναι συνδεδεμένη*/ korifi i,j; for (i=0; i <= Garkrfon-; i++){ printf("γραμμή %d ", i); for (j=0; j <= Garkrfon-; j++) printf ("%8d",Ggeit_pin[i][j]); printf ("\n"); printf ("\n");

23 /* Προ : Ένα κατευθυνόμενο γράφημα με βάρη Μετά: Εύρεση του συντομότερου μονοπατιού και επιστροφή του αποτελέσματος στον πίνακα D */ void Dijkstra(graphima G){ typos_synolou S; /* το σύνολο ειδικών κορυφών*/ korifi i,j,w; int elaxisti_apostasi; int apostasi[plithos]; int monopati[plithos]; dimiourgia(s); eisagogi(0,s); /* Αρχικές τιμές για τα συντομότερα μονοπάτια εφόσον υπάρχουν ακμές από την κορυφή 0*/ for (j=; j <= Garkrfon-; j++){ apostasi[j] = Ggeit_pin[0][j]; if (Ggeit_pin[0][j] == infinity) monopati[j] = -; else monopati[j] = 0; συνέχεια for ( i = ; i <= Garkrfon-; i++){ /* Επιλογή μιας κορυφής w στο V-S : apostasi[w]=min */ elaxisti_apostasi = infinity; for (j = ; j <= Garkrfon-; j++) if ( (!melos(j,s)) &&(apostasi[j]<elaxisti_apostasi)){ elaxisti_apostasi = apostasi[j]; w = j; eisagogi(w,s); /* Πρόσθεση της w στο S */ /*Ενημέρωση των τιμών για τον πίνακα apostasi */ for (j = ; j <= Garkrfon-; j++) if ( (!melos(j,s)) &&( apostasi[w]+(ggeit_pin)[w][j]) < (apostasi[j])){ apostasi[j]= apostasi[w]+(ggeit_pin)[w][j]; monopati[j] = w; for (i=; i <= Garkrfon-; i++) printf("%d %d %d\n",i,apostasi[i],monopati[i]); 3

Γραφήματα (Graphs) Κατευθυνόμενο γράφημα ακμές με κατεύθυνση (μονόδρομος) G = (V, E) Κορυφές και ακμές. μονοπάτι 1,2,3,4 κορυφή 3

Γραφήματα (Graphs) Κατευθυνόμενο γράφημα ακμές με κατεύθυνση (μονόδρομος) G = (V, E) Κορυφές και ακμές. μονοπάτι 1,2,3,4 κορυφή 3 G = (V, E) Κορυφές και ακμές V(G ) = {,,3,, Γραφήματα (Graphs) G E(G ) = {(,), (,3), (,), (3,), (,) μονοπάτι,,3, κορυφή 3 ακμή γειτονικές 3 Κατευθυνόμενο γράφημα ακμές με κατεύθυνση (μονόδρομος) V(G 3

Διαβάστε περισσότερα

Γραφήματα (Graphs) G = (V, E) Κορυφές και ακμές. μονοπάτι 1,2,3,4 κορυφή 3. ακμή. γειτονικές G 1 V(G 1 ) = {1,2,3,4,5}

Γραφήματα (Graphs) G = (V, E) Κορυφές και ακμές. μονοπάτι 1,2,3,4 κορυφή 3. ακμή. γειτονικές G 1 V(G 1 ) = {1,2,3,4,5} Γραφήματα (Graphs) G = (V, E) Κορυφές και ακμές 2 4 μονοπάτι,2,3,4 κορυφή 3 ακμή γειτονικές V(G ) = {,2,3,4,5 G E(G ) = {(,2), (2,3), (2,4), (3,4), (4,5) 5 To Δένδρο, ειδική περίπτωση γραφήματος 2 3 G

Διαβάστε περισσότερα

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 7: ΑΤΔ Γράφημα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 7: ΑΤΔ Γράφημα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 7: ΑΤΔ Γράφημα Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Σκοποί ενότητας Να ορίσει τον ΑΤΔ Γράφημα. Να σχεδιάσει

Διαβάστε περισσότερα

Γραφήματα (Graphs) G = (V, E) Κορυφές V και ακμές E. μονοπάτι 1, 2, 3, 4 κορυφή 3. ακμή. γειτονικές G 1 V(G 1 ) = {1,2,3,4,5}

Γραφήματα (Graphs) G = (V, E) Κορυφές V και ακμές E. μονοπάτι 1, 2, 3, 4 κορυφή 3. ακμή. γειτονικές G 1 V(G 1 ) = {1,2,3,4,5} Γραφήματα (Graphs) G = (V, E) Κορυφές V και ακμές E 2 4 μονοπάτι, 2, 3, 4 κορυφή 3 ακμή γειτονικές V(G ) = {,2,3,4,5 G E(G ) = {(,2), (2,3), (2,4), (3,4), (4,5) 5 To Δένδρο, ειδική περίπτωση γραφήματος

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 10 ο Γράφοι Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Γράφοι Ορισµός Αφηρηµένος τύπος δεδοµένων Υλοποίηση Αναζήτηση έντρο

Διαβάστε περισσότερα

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή. Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή. Αφηρηµένος τύπος δεδοµένων (abstract data type): είναι ένα θεωρητικό

Διαβάστε περισσότερα

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω εµπρός Ουρές (Queues) A B C FIFO εµπρός πίσω B C Διαγραφή εµπρός πίσω B C D E Εισαγωγή πίσω Ορισµός Η ουρά είναι µια γραµµική λίστα στην οποία η διαγραφή ενός στοιχείου γίνεται στο ένα άκρο το οποίο καλείται

Διαβάστε περισσότερα

Δέντρα (Trees) - Ιεραρχική Δομή

Δέντρα (Trees) - Ιεραρχική Δομή Δέντρα (Trees) - Ιεραρχική Δομή Εφαρμογές Δομή Οργάνωση Αρχείων Οργανογράμματα Ορισμός (αναδρομικός ορισμός): Ένα δέντρο είναι ένα πεπερασμένο σύνολο κόμβων το οποίο είτε είναι κενό είτε μη κενό σύνολο

Διαβάστε περισσότερα

Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. Ο ΑΤΔ ΓΡΑΦΗΜΑ

Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. Ο ΑΤΔ ΓΡΑΦΗΜΑ 1.1 Εισαγωγή 1. Ο ΑΤΔ ΓΡΑΦΗΜΑ Σε προηγούμενα κεφάλαια είδαμε γραμμικές δομές δεδομένων (στοίβα, ουρά, λίστα), στις οποίες κάθε στοιχείο μπορεί να έχει το πολύ ένα επόμενο και το πολύ ένα προηγούμενο, αλλά

Διαβάστε περισσότερα

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών ΛΙΣΤΕΣ Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα Υλοποίηση με δείκτες (pointers) Υλοποίηση με πίνακα Εφαρμογές και Χρήση Λιστών Λίστες (Lists) Δεδομένα

Διαβάστε περισσότερα

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

Διαβάστε περισσότερα

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

Διαβάστε περισσότερα

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: υαδικά έντρα Αναζήτησης (Binary Search Trees) Ορισµός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόµενα στο αριστερό υποδέντρο του t είναι

Διαβάστε περισσότερα

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation.

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation. Γραμμικές Δομές Δεδομένων Επισκόπηση Μαθήματος Συλλογή δεδομένων στη σειρά (ολική διάταξη). Προσθέτουμε δεδομένα στη Δομή (μεγαλώνει) ή αφαιρούμε δεδομένα (μικραίνει) Αν περιορίσουμε τις πράξεις Στην Αρχή

Διαβάστε περισσότερα

Γραμμικές Δομές Δεδομένων

Γραμμικές Δομές Δεδομένων Γραμμικές Δομές Δεδομένων Συλλογή δεδομένων στη σειρά (ολική διάταξη). Προσθέτουμε δεδομένα στη Δομή (μεγαλώνει) ή αφαιρούμε δεδομένα (μικραίνει) Αν περιορίσουμε τις πράξεις Στην Αρχή μόνο Στοίβα (stack)

Διαβάστε περισσότερα

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

Διαβάστε περισσότερα

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 18 Dijkstra s Shortest Path Algorithm 1 / 12 Ο αλγόριθμος εύρεσης της συντομότερης διαδρομής του Dijkstra

Διαβάστε περισσότερα

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας ΣΤΟΙΒΕΣ (stacks) Η στοίβα είναι µια συλλογή δεδοµένων µε γραµµική διάταξη στην οποία όλες οι εισαγωγές και οι διαγραφές γίνονται στο ένα άκρο που λέγεται κορυφή (top) της στοίβας Σχήµα: Λειτουργία Στοίβας

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

ΕΠΛ232: Εργαστήριο 2

ΕΠΛ232: Εργαστήριο 2 ΕΠΛ232: Εργαστήριο 2 Παράδειγμα σε Στοίβες 1 Υπολογισμός Αριθμητικών Παραστάσεων - Πολωνικός Συμβολισμός A + (B * C) A + (BC * ) A(BC *) + ABC * + Ενδοθεματική μορφή Μεταθεματική μορφή Οι κανόνες που διέπουν

Διαβάστε περισσότερα

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 3: ΑΤΔ Ουρά. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 3: ΑΤΔ Ουρά. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 3: ΑΤΔ Ουρά Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ορίζει τον ΑΤΔ Ουρά Σκοποί ενότητας Σχεδιάζει τον ΑΤΔ Ουρά

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 20: Δυαδικό Δέντρο Αναζήτησης Δυαδικό δέντρο Κάθε κόμβος «γονέας» περιέχει δύο δείκτες που δείχνουν σε δύο κόμβους «παιδιά» του ιδίου τύπου. Αν οι δείκτες προς αυτούς

Διαβάστε περισσότερα

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012 Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012 Κύκλος (Ζωής) Λογισμικού (ΑΤΔ) Γενικά Ορισμός ΑΤΔ (Προδιαγραφές) Οργάνωση Δεδομένων Τι κάνει Υλοποίηση Σχεδιασμός (ανεξάρτητος

Διαβάστε περισσότερα

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα Αναζήτηση κατά βάθος (Depth-first search DFS) Αναζήτηση κατά πλάτος (Breadth-first search BFS) 2 Γράφημα (graph) Αναπαράσταση συνόλου

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΟΔΗΓΙΕΣ: ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - 14 ΙΟΥΝΙΟΥ 2015 Τα θέματα που έχετε στα χέρια σας είναι σε τρεις (3) σελίδες. Επιβεβαιώστε το και αν λείπει κάποια σελίδα

Διαβάστε περισσότερα

u v 4 w G 2 G 1 u v w x y z 4

u v 4 w G 2 G 1 u v w x y z 4 Διάλεξη :.0.06 Θεωρία Γραφημάτων Γραφέας: Σ. Κ. Διδάσκων: Σταύρος Κολλιόπουλος. Εισαγωγικοί ορισμοί Ορισμός. Γράφημα G καλείται ένα ζεύγος G = (V, E) όπου V είναι το σύνολο των κορυφών (ή κόμβων) και E

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ????

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ???? η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα θέση (index) dedomena epomenos lista = 0 1 3 Ελένη Σπύρος Βασίλης -1 1 Στη συνέχεια θα πρέπει να γνωρίζουμε την οργάνωση

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα

Διαβάστε περισσότερα

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Άσκηση 1 Χρησιμοποιούμε τις δομές: struct hashtable { struct node array[maxsize]; int maxsize; int size; struct node{ int data; int status; Στο πεδίο status σημειώνουμε

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 9: Εισαγωγή στους Γράφους Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Γράφοι - ορισμοί και υλοποίηση Διάσχιση Γράφων Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διαβάστε περισσότερα

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ÌïëëÜ Ì. Á μýô Á.Ì. : 5 moll@moll.r ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΜΑΘΗΜΑ : ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΤΥΟ (ΕΡΓΑΣΤΗΡΙΟ) Ε ΕΞΑΜΗΝΟ ΕΙΣΗΓΗΤΕΣ: Χαϊδόγιαννος Χαράλαμπος ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ

Διαβάστε περισσότερα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

Διαβάστε περισσότερα

ρίζα E F G H I J επίπεδο 1

ρίζα E F G H I J επίπεδο 1 Δέντρα (Trees) Ορισµός: Ενα δέντρο είναι ένα πεπερασµένο µη κενό σύνολο κόµβων τέτοιο ώστε: 1.Yπάρχει ένας µοναδικός κόµβος, που καλείται ρίζα, ο οποίος δεν έχει προηγούµενο. 2.Οι υπόλοιποι κόµβοι χωρίζονται

Διαβάστε περισσότερα

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση

Διαβάστε περισσότερα

1 Το πρόβλημα της συντομότερης διαδρομής

1 Το πρόβλημα της συντομότερης διαδρομής ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 00 Ιστοσελίδα μαθήματος: http://eclass.teilam.gr/di88 6ο ΕΡΓΑΣΤΗΡΙΟ

Διαβάστε περισσότερα

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V Γράφοι Ορολογία γράφος ή γράφηµα (graph) Ορισµός: G = (V, E) όπου V:ένα σύνολο E:µια διµελής σχέση στο V Ορολογία (συνέχεια) κάθε v V ονοµάζεται κορυφή (vertex) ή κόµβος (node) κάθε (v 1, v 2 ) Ε ονοµάζεται

Διαβάστε περισσότερα

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Άσκηση 1 (α) Ο αλγόριθµος χρησιµοποιεί τη διαδικασία DFS(v) η οποία, ως γνωστό, επισκέπτεται όλους τους κόµβους που είναι συνδεδεµένοι µε τον κόµβο v. Για να µετρήσουµε

Διαβάστε περισσότερα

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1 Γράφοι Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Γράφοι - ορισµοί και υλοποίηση Διάσχιση Γράφων Τοπολογική Ταξινόµηση ΕΠΛ 23 Δοµές Δεδοµένων και Αλγόριθµοι - Γράφοι Η πιο γενική µορφή δοµής

Διαβάστε περισσότερα

Δρ. Πέτρος Παναγή B123

Δρ. Πέτρος Παναγή B123 Δρ. Πέτρος Παναγή petrosp@cs.ucy.ac.cy B123 1 ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συμβολοσειρά Μία συμβολοσειρά είναι μία συλλογή χαρακτήρων με διάταξη Bασικές πράξεις : (Είναιτοελάχιστοδυνατόσύνολοπράξεων)

Διαβάστε περισσότερα

Εισαγωγή στους Αλγόριθμους

Εισαγωγή στους Αλγόριθμους Εισαγωγή στους Αλγόριθμους Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών Σκοποί ενότητας Παρουσίαση και μελέτη αλγορίθμων

Διαβάστε περισσότερα

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος Αναζήτηση Κατά Πλάτος ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Γραφήματα Μοντελοποίηση πολλών σημαντικών προβλημάτων (π.χ. δίκτυα συνεκτικότητα,

Διαβάστε περισσότερα

ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3.

ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3. ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων Bασικές πράξεις : 1. Δηµιουργία 2. Μήκος 3. Ανάκτηση 4. Προσάρτηση 5. Διαγραφή 6. Αντιγραφή 7. Συνένωση 8. Αναζήτηση

Διαβάστε περισσότερα

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος Αναζήτηση Κατά Πλάτος Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Γραφήματα Μοντελοποίηση πολλών σημαντικών προβλημάτων (π.χ. δίκτυα

Διαβάστε περισσότερα

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Θεωρία Γραφημάτων 5η Διάλεξη

Θεωρία Γραφημάτων 5η Διάλεξη Θεωρία Γραφημάτων 5η Διάλεξη Α. Συμβώνης Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών Τομέας Μαθηματικών Φεβρουάριος 2017 Α. Συμβώνης (ΕΜΠ) Θεωρία Γραφημάτων 5η Διάλεξη

Διαβάστε περισσότερα

1. ΕΙΣΑΓΩΓΗ-ΓΕΝΙΚΑ ΠΕΡΙ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ

1. ΕΙΣΑΓΩΓΗ-ΓΕΝΙΚΑ ΠΕΡΙ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ 1. ΕΙΣΑΓΩΓΗ-ΓΕΝΙΚΑ ΠΕΡΙ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ Σκοπός-αντικείμενο των σημειώσεων αποτελεί η παρουσίαση βασικών αφηρημένων τύπων δεδομένων (ΑΤΔ) τόσο σε επίπεδο υλοποιήσεων και εφαρμογών αυτών σε προγραμματιστικό

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 26 Ιουνίου 201 1 / Απληστοι (Greedy) Αλγόριθµοι

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Μαΐου 201 1 / Απληστοι (Greedy) Αλγόριθµοι

Διαβάστε περισσότερα

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 1 2 3 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από

Διαβάστε περισσότερα

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

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

Διαβάστε περισσότερα

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο Σχεδίαση Αλγορίθμων Άπληστοι Αλγόριθμοι http://delab.csd.auth.gr/~gounaris/courses/ad 1 Άπληστοι αλγόριθμοι Προβλήματα βελτιστοποίησης ηςλύνονται με μια σειρά επιλογών που είναι: εφικτές τοπικά βέλτιστες

Διαβάστε περισσότερα

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

Διαβάστε περισσότερα

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

Διαβάστε περισσότερα

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

6η Διάλεξη Διάσχιση Γράφων και Δέντρων ΘΕΩΡΙΑ ΓΡΑΦΩΝ 6 η Διάλεξη Διάσχιση Γράφων και Δέντρων Αλγόριθμος αναζήτησης σε Βαθος Αλγόριθμος αναζήτησης κατά Πλάτος Αλγόριθμοι για Δένδρα Εύρεση ελαχίστων Γεννητορικών (Επικαλύπτοντα) Δένδρων Διάσχιση

Διαβάστε περισσότερα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035

Διαβάστε περισσότερα

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ιάλεξη : λάχιστα εννητορικά ένδρα Αλγόριθμος Prim Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: λάχιστα εννητορικά ένδρα () Minimum Spanning Trees Ο αλγόριθμος του Prim για εύρεση σε γράφους

Διαβάστε περισσότερα

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος Αναζήτηση Κατά Πλάτος ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 3 ο Συνδεδεµένες Λίστες Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση ΟΑΤ λίστα Ακολουθιακή λίστα Συνδεδεµένη λίστα

Διαβάστε περισσότερα

Θεωρία Γραφημάτων 5η Διάλεξη

Θεωρία Γραφημάτων 5η Διάλεξη Θεωρία Γραφημάτων 5η Διάλεξη Α. Συμβώνης Εθνικο Μετσοβειο Πολυτεχνειο Σχολη Εφαρμοσμενων Μαθηματικων και Φυσικων Επιστημων Τομεασ Μαθηματικων Φεβρουάριος 2016 Α. Συμβώνης (ΕΜΠ) Θεωρία Γραφημάτων 5η Διάλεξη

Διαβάστε περισσότερα

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) :

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) : Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος και Γέφυρα του (με αφετηρία τον ) : Ακμή που περιέχεται σε κάθε μονοπάτι από το στο s a b c d e f g h i j k l Μας δίνεται ένα δίκτυο (κατευθυνόμενο

Διαβάστε περισσότερα

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007 Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007 Πρόβλημα 1 Το πρώτο πρόβλημα λύνεται με τη μέθοδο του Δυναμικού Προγραμματισμού. Για να το λύσουμε με Δυναμικό Προγραμματισμό

Διαβάστε περισσότερα

Αλγόριθμοι Γραφημάτων

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων. Γραφήματα. Αναπαράσταση Γραφημάτων 3. Διερεύνηση σε Πρώτα σε Πλάτος (BFS) Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Γράφημα Ορισμός: Ένα γράφημα G είναι το διατεταγμένο ζεύγος

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4 ο εξάμηνο ΣΗΜΜΥ 4 η ενότητα: Γράφοι: προβλήματα και αλγόριθμοι Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2011 Θέµα 1 (α') 1 - i 2 - ii 3 - iii 4 - iv 5 - v 6 - vi 7 - vii 8 - viii 9 - ix 10 - x Το αποτέλεσµα είναι η αντιστοιχία των

Διαβάστε περισσότερα

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035). Βασικές Δοµές Δεδοµένων Σύντοµη επανάληψη (ΕΠΛ 035). Περίληψη Γραµµικές Δοµές Δεδοµένων Πίνακες Λίστες Στοίβες Ουρές Γράφοι Δέντρα Γραµµικές Δοµές Πίνακας (array) A[0] A[1] A[2] A[ ] A[n-1] Προκαθορισµένη

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Υλοποίηση Λιστών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμές Απλά και Διπλά Συνδεδεμένες Λίστες Κυκλικές Απλά και Διπλά Συνδεδεμένες Λίστες Τεχνικές Μείωσης Μνήμης ΕΠΛ 231 Δομές

Διαβάστε περισσότερα

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, Γράφοι Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Γράφοι - ορισµοί και υλοποίηση Τοπολογική Ταξινόµηση ιάσχιση Γράφων ΕΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 26 - Γράφοι Ηπιο

Διαβάστε περισσότερα

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος Αναζήτηση Κατά Πλάτος Επιµέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Γραφήµατα Μοντελοποίηση πολλών σηµαντικών προβληµάτων (π.χ. δίκτυα

Διαβάστε περισσότερα

AVL δέντρα. h L h R. G.M. Adelson_Velkii και E.M. Landis 1962

AVL δέντρα. h L h R. G.M. Adelson_Velkii και E.M. Landis 1962 AVL δέντρα L - R 1 L R G.M. AdelsonVelkii και E.M. Landis 1962 AVL Δέντρα Μη AVL Δέντρα Εισαγωγή κόμβου 4, 6 : 4 12 : 6 4 6 Αριστερή στροφή 6 4 12 12 8, 14 : 6 4 12 8 14 7 : 4 6 12 6 4 8 6 8 12 7 8 14

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ 1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #2: Πολυωνυμικοί Αλγόριθμοι, Εισαγωγή στα Γραφήματα, Αναζήτηση κατά Βάθος, Τοπολογική Ταξινόμηση

Διαβάστε περισσότερα

υαδικό δέντρο έντρα (Trees) -Ιεραρχική οµή

υαδικό δέντρο έντρα (Trees) -Ιεραρχική οµή έντρα (Trees) Ιεραρχική οµή Εφαρµογές οµή Οργάνωση ρχείων Οργανογράµµατα Ορισµός (αναδροµικός ορισµός): Ένα δέντρο είναι ένα πεπερασµένο σύνολο κόµβων το οποίο είτε είναι κενό είτε µη κενό σύνολο τέτοιο

Διαβάστε περισσότερα

Μάθημα 21: Ουρές (Queues)

Μάθημα 21: Ουρές (Queues) Queues Page 1 Μάθημα 21: Ουρές (Queues) Η ουρά (queue) είναι μια δομή δεδομένων. Η βασική λειτουργικότητα είναι η εισαγωγή στοιχείων στην πίσω θέση και η εξαγωγή-διαγραφή στοιχείων από την μπροστινή θέση.

Διαβάστε περισσότερα

Αλγόριθμοι Γραφημάτων

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων 1. Συντομότατα μονοπάτια 2. Αλγόριθμος Bellman-Ford 3. Αλγόριθμος Dijkstra 4. Floyd-Warshall Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Single-Source Shortest Path Πρόβλημα:

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 10β: Αλγόριθμοι Γραφημάτων-Γραφήματα- Αναπαράσταση Γραφημάτων- Διερεύνηση Πρώτα σε Πλάτος (BFS) Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Μέρος 1

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ Ουρές Προτεραιότητας (Priority Queues) Θεωρούµε ότι τα προς αποθήκευση στοιχεία έχουν κάποια διάταξη (καθένα έχει µια προτεραιότητα). Τα προς αποθήκευση στοιχεία είναι

Διαβάστε περισσότερα

1 Διάσχιση κατευθυνόμενων γραφημάτων

1 Διάσχιση κατευθυνόμενων γραφημάτων ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010 11 Ιστοσελίδα μαθήματος: http://eclass.teilam.gr/di288 5ο ΕΡΓΑΣΤΗΡΙΟ

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι Κατανεμημένα Συστήματα Ι Εκλογή αρχηγού και κατασκευή BFS δένδρου σε σύγχρονο γενικό δίκτυο Παναγιώτα Παναγοπούλου Περίληψη Εκλογή αρχηγού σε γενικά δίκτυα Ορισμός του προβλήματος Ο αλγόριθμος FloodMax

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 9: Άπληστοι Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, ορισμοί, πράξεις και αναπαράσταση στη μνήμη ΔυαδικάΔένδρακαιΔυαδικάΔένδραΑναζήτησης ΕΠΛ 231 Δομές

Διαβάστε περισσότερα

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 7 ο έντρο Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης έντρο Ορισµός Υλοποίηση µε Πίνακα Υλοποίηση µε είκτες υαδικό έντρο

Διαβάστε περισσότερα

Συντομότερα Μονοπάτια για Όλα τα Ζεύγη Κορυφών

Συντομότερα Μονοπάτια για Όλα τα Ζεύγη Κορυφών Συντομότερα Μονοπάτια για Όλα τα Ζεύγη Κορυφών Αλγόριθμοι και πολυπλοκότητα Στάθης Ζάχος, Δημήτρης Φωτάκης Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4 ο εξάμηνο ΣΗΜΜΥ 5 η ενότητα: Γράφοι: προβλήματα και αλγόριθμοι Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα