Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Graphs (Εισαγωγή)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Γραφήματα & Επίπεδα Γραφήματα
Advertisements

Στρατηγική ανάπτυξης προγράμματος την ώρα του διαγωνισμού
Στατική Συμβολική Παραγώγιση Λάμδα Εκφράσεων στην C++
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Διακριτά Μαθηματικά ΙI Δέντρα
Προγραμματισμός Ι Παράδειγμα: Παράδειγμα:Να γραφεί πρόγραμμα που να δέχεται ως είσοδο κείμενο, να απαριθμεί τις εμφανίσεις των ψηφίων 0-9, τα λευκά διαστήματα.
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C Evangelos Theodoridis.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Αλγόριθμοι Ταξινόμησης
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δομημένος Προγραμματισμός και Δομές.
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
1Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΓΡΑΦΟΙ (GRAPHS) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Νίκος Παπασπύρου.
Αλγόριθμοι Αναζήτησης
Γραφήματα & Επίπεδα Γραφήματα
1 Θεματική Ενότητα Γραφήματα & Επίπεδα Γραφήματα.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Ολυμπιάδα Πληροφορικής
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Recursion - Αναδρομή.
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
Ολυμπιάδα Πληροφορικής
Lab 11: DFS and BFS. ΑΒ DFC GEH Παναγιώτης Χαραλάμπους19/11/20102.
Ολυμπιάδα Πληροφορικής
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Stacks - Στοίβες.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση βάρους Κατευθυνόμενο γράφημα.
1 Ολυμπιάδα Πληροφορικής Μάθημα 5. 2 Στόχοι μαθήματος Πίνακες 2 διαστάσεων.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Γράφοι: Προβλήματα και Αλγόριθμοι
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών.
Είσοδος & Έξοδος στη C++ Ι
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Διάσχιση.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Eξάμηνο 4ο1 Μείωσε και Βασίλευε Μειώνουμε το στιγμιότυπο του προβλήματος σε ένα μικρότερο στιγμιότυπο.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Γενικές αρχές Για να μπορέσει το επίπεδο δικτύου να παραδώσει ένα πακέτο, πρέπει να συνεργαστούν οι κόμβοι που παρεμβάλονται ανάμεσα στον αποστολέα και.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Αναζήτηση Κατά Βάθος Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Χρονική Πολυπλοκότητα και Μοντέλα
Γράφημα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Συνδυαστικό αντικείμενο που αποτελείται από.
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
Θεωρία Υπολογισμού Κλάσεις P και NP.
Εισαγωγή Αλέξανδρος Νανόπουλος
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
ΤΕΙ Αθήνας: Σχολή ΤΕΦ: Τμήμα Ναυπηγικής Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ NA0703C39 Εξάμηνο Ζ’ Διδάσκων Κωνσταντίνος Β. Κώστας Παρουσίαση.
1 Θεωρία Υπολογισμού Ενότητα 3 : Γραφήματα & Αποδείξεις Αλέξανδρος Τζάλλας Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ. 2 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα –Αναζήτηση κατά βάθος (Depth-first search – DFS) –Αναζήτηση κατά πλάτος (Breadth-first.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
ΔΙΑΛΕΞΗ 9η Οργανωτική Δομή και Ανάλυση Γραφειοκρατία Οργανογράμματα
Δομές Δεδομένων 2η Διάλεξη Αλγόριθμοι Ένωσης-Εύρεσης (Union-Find)
Διερεύνηση γραφήματος
Δένδρα Δένδρο είναι ένα συνεκτικό άκυκλο γράφημα. Δένδρο Δένδρο Δένδρο
Ενότητα Εισαγωγή Είναι εύκολη στη χρήση και στην εκμάθηση.
ΓΡΑΦΟΙ (GRAPHS).
ΕπιβλΕπων: Δρ. Κ. Σ. ΧειλΑΣ, ΑναπληρωΤΗΣ ΚαθηγητΗΣ
Στοιχεία Θεωρίας Γραφημάτων
EPL231 – Data Structures and Algorithms
Γαλλία.
Ελαφρύτατες διαδρομές
გრაფები. ცნებები და განსაზღვრებები.
Μεταγράφημα παρουσίασης:

Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Graphs (Εισαγωγή)

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 11-2 Γράφοι Ένα γράφος αποτελείται από ένα σύνολο V κορυφών (vertices), ή σημείων, ή κόμβων, και ένα σύνολο Ε ακμών (edges). Παράδειγμα γράφου:

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 11-3 Γράφοι Οι γράφοι προσφέρουν μια χρήσιμη μέθοδο για τη διατύπωση και λύση πολλών προβλημάτων, σε δίκτυα και συστήματα τηλεπικοινωνιών (π.χ. το Internet), χάρτες - επιλογή δρομολογίων, προγραμματισμό εργασιών (scheduling), ανάλυση προγραμμάτων (flow charts). Η μελέτη της θεωρίας γράφων θεωρείται ότι ξεκίνησε από τον Euler στις αρχές του 18ου αιώνα (1736).

Ορισμοί Ένας γράφος ονομάζεται κατευθυνόμενος (directed graph, digraph) αν κάθε μια από τις ακμές του είναι προσανατολισμένη προς μία κατεύθυνση. Ένας γράφος ονομάζεται μη-κατευθυνόμενος (undirected) αν οι ακμές του δεν είναι προσανατολισμένες. Ένας μη κατευθυνόμενος γράφος λέγεται συνεκτικός (connected) αν για κάθε ζευγάρι κορυφών υπάρχει διαδρομή που τις συνδέει. Διδάσκων: Παύλος Παυλικκάς4

Πίνακας γειτνίασης - adjacency matrix Ένας γράφος με n κορυφές μπορεί να αναπαρασταθεί με έναν πίνακα nxn όπου θα έχει τον αριθμό 1 στις θέσεις που συνδέεται ο κόμβος i με τον κόμβος j διαφορετικά θα έχει τον αριθμό 0. Σε περίπτωση που ο γράφος είναι με βάρη τότε στη θέση του αριθμού 1 θα υπάρχει το βάρος Διδάσκων: Παύλος Παυλικκάς5

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 11-6 Πίνακας γειτνίασης - adjacency matrix ΓράφοςΠίνακας Γειτνίασης Το πλεονέκτημα του πίνακα γειτνίασης είναι ότι έχει τις ευκολίες που παρέχει ένας πίνακας όσο αφορά την προσπέλαση του. Το μειονέκτημα του είναι ότι για μεγάλους γράφους χρειαζόμαστε τεράστιους πίνακες το μεγαλύτερο μέρος των οποίων έχει αποθηκευμένες άχρηστες πληροφορίες (0). Όπως φαίνεται θα μπορούσαμε να χρησιμοποιήσουμε μια άλλη δομή δεδομένων

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 11-7 Λίστες Γειτνίασης Γράφος Λίστα Γειτνίασης

Παράδειγμα 1 Σε μια χώρα υπάρχουν 10 πόλεις που συνδέονται μεταξύ τους. Μέσα στο αρχείο par1.in υπάρχουν οι συνδέσεις μεταξύ των πόλεων. Να δημιουργήσετε το πρόγραμμα που τυπώνει τον πίνακα γειτνίασης στο αρχείο par1.out Διδάσκων: Παύλος Παυλικκάς8

Παράδειγμα 1 #include using namespace std; int adj[10][10]; int main(){ int a,b,i,j; ifstream fin ("par1.in"); ofstream fout("par1.out"); for(i=0;i<10;i++) for(j=0;j<10;j++) adj[i][j]=0; while(!fin.eof()){ fin>>a>>b; adj[a][b]=1; } for(i=0;i<10;i++){ for(j=0;j<10;j++) fout<<adj[i][j]<<" "; fout<<"\n"; } fin.close(); fout.close(); return 0; } Διδάσκων: Παύλος Παυλικκάς10

Παράδειγμα 1 Διδάσκων: Παύλος Παυλικκάς11

Παράδειγμα 2 Το ίδιο παράδειγμα να λυθεί με λίστες γειτνίασης. Σημείωση: Στη λύση που ακολουθεί χρησιμοποιώ vectors για να υλοποιήσω τις λίστες γειτνίασης Διδάσκων: Παύλος Παυλικκάς12

Παράδειγμα 2 #include using namespace std; vector > adj; int main(){ int a,b,i,j; ifstream fin ("par1.in"); ofstream fout("par1.out"); for(i=0;i<10;i++) adj.push_back(vector ()); while(!fin.eof()){ fin>>a>>b; adj[a].push_back(b); } for(i=0;i<10;i++){ fout<<i<<":"; for(j=0;j<adj[i].size();j++) fout<<adj[i][j]<<" "; fout<<"\n"; } fin.close(); fout.close(); return 0; } Διδάσκων: Παύλος Παυλικκάς13

Παράδειγμα 2 Διδάσκων: Παύλος Παυλικκάς14