Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Σχετικά έγγραφα
Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00

Δρ. Σταύρος Καραθανάσης

Εισαγωγή στη Χρήση του SPSS for Windows Σελίδα:

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

double sum(double a, double b) { return(a+b); } double my_avg(double a, double b) { return(sum(a, b)/2.0); }

Visual Basic Γλώσσα οπτικού

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

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

Λογισμικά για Στατιστική Ανάλυση. Minitab, R (ελεύθερο λογισμικό), Sas, S-Plus, Stata, StatGraphics, Mathematica (εξειδικευμένο λογισμικό για

Περιεχόµενα. Λίγα λόγια από τους συγγραφείς...9. Για τον εκπαιδευτή και το γονέα Αριθµοί και Υπολογισµοί (Numbers and Calculations)

Γραφικά περιβάλλοντα από τον χρήστη Graphical User Interfaces (GUI)

Μεταφραστής Braille WinBraille v.4.1.5

Πανεπιστήµιο Θεσσαλίας

Μεθόδων Επίλυσης Προβλημάτων

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Τεχνολογίες Υλοποίησης Αλγορίθµων

Εισαγωγή στο περιβάλλον Code::Blocks

Τεχνολογίες Υλοποίησης Αλγορίθµων

Οπτικοποίηση με Prefuse. Δομή / Βασικά Χαρακτηριστικά / Παράδειγμα

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, MICROSOFT CHAT v2.0

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

ΒΙΟΣΤΑΤΙΣΤΙΚΗ Πρακτική με SPSS (1)

BloodShed Dev C++ Οδηγίες Χρήσης (Συγγραφέας: Πάρις Πολύζος)

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης)

ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ 2

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Διάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα)

Η γλώσσα προγραμματισμού C

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Επεξεργασία πολλαπλών φύλλων εργασίας - Γραφημάτων Excel

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Βασικές Έννοιες Δοµών Δεδοµένων

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Επεξεργασίας Κειμένου. 2. Κύρια Οθόνη Της Εφαρμογής Κειμένου ΣΤΟΧΟΙ:

Share and Storage Management. Τεχνικός Δικτύων & Τηλεπικοινωνιών - Διαχείριση Δικτύων ΙΙ

Δημιουργία μιας εφαρμογής Java με το NetBeans

COSMOTE E220 USB Modem (3G HSDPA 3.6Mbps) Εγχειρίδιο Χρήσης

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι.

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

Δυναμική μνήμη με πίνακες και λίστες

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Ανοίξτε την εικόνα Hel_MDSGEO και δημιουργήστε δύο έγχρωμα σύνθετα ένα σε πραγματικό χρώμα (True color) και ένα σε ψευδοέχρωμο υπέρυθρο (CIR)

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Διάθρωση. HΥ351 Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων Information Systems Analysis and Design

HY150a Φροντιστήριο 3 24/11/2017

Συνδυασμός Μαθηματικών με γραφικές παραστάσεις

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Εισαγωγή στην πληροφορική

Επεξεργασία Αρχείων Κειµένου

2. Με το εικονίδιο συντόμευσης στην επιφάνεια εργασίας των Windows.

Τεχνολογίες Υλοποίησης Αλγορίθµων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εργαστηριακή Άσκηση 4

Λογισμικά για Στατιστική Ανάλυση. Minitab, R (ελεύθερο λογισμικό), Sas, S-Plus, Stata, StatGraphics, Mathematica (εξειδικευμένο λογισμικό για

Εισαγωγή στη Χρήση της Εφαρµογής Compaq Visual Fortran & του Microsoft Developer Studio

Ανάπτυξη εφαρμογής Input-Output

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 6

ΜΑΘΗΜΑ 10 Ο ΟΡΓΑΝΩΣΗ ΤΗΣ Β ΓΙΑ ΧΡΗΣΤΕΣ (NON-EXPERTS) Α. ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΠΙΛΟΓΩΝ 1. TOOLS DATA UTILITIES SWITCHBOARD MANAGER YES

Τεχνολογίες Υλοποίησης Αλγορίθµων

Μεθόδων Επίλυσης Προβλημάτων

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

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Οδηγίες Χρήσης λογισμικού Adobe Acrobat Reader και nexus Personal για την προσθήκη Ψηφιακής Υπογραφής σε Αρχείo PDF

APPLICATIONMANUAL v 0.1

Τεχνολογίες Υλοποίησης Αλγορίθµων

Ανάπτυξη εφαρμογής Input-Output

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Συσκευές εισόδου. Φυσικές συσκευές εισόδου Λογικές συσκευές εισόδου

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΙΝΙΤΑΒ Ξεκινώντας το Στατιστικό Πρόγραμμα Minitab 16

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

ΠΑΝΔΠΙΣΗΜΙΟ ΠΔΙΡΑΙΩ ΣΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗ ΓΙΟΙΚΗΗ & ΣΔΧΝΟΛΟΓΙΑ TOOLBOOK - ΕΙΣΑΓΩΓΗ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΓΗΜ. ΔΚΠΑΙΓΔΤΣΙΚΟ ΠΔ19 1 TOOLBOOK ΜΑΘΗΜΑ 1

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

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εισαγωγή στη Βιοπληροφορική

ιαφάνειες παρουσίασης #6 (β)

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου

Εκπαιδευτικό λογισµικό κατασκευής φασµάτων Educational SPECtrum. ESPECsoftware

Δημιουργία τομής σε εξάρτημα

Transcript:

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών Ο τύπος GraphWin της LEDA 1 / 22

Ο τύπος δεδοµένων GraphWin της LEDA Ενα αντικείµενο τύπου GraphWin είναι τρία πράγµατα µαζί: ένα παράθυρο, ένα γράφηµα και ένας σχεδιασµός (απεικόνιση) ενός γραφήµατος. Το γράφηµα και η σχεδιαστική του απεικόνιση µπορούν να µεταβληθούν είτε µέσω χρήσης του ποντικιού, είτε τρέχοντας έναν αλγόριθµο στο γράφηµα. Ο τύπος GraphWin µπορεί να χρησιµοποιηθεί για: ηµιουργία και απεικόνιση γραφηµάτων Οπτικοποίηση γραφηµάτων και των αποτελεσµάτων αλγορίθµων γραφηµάτων Συγγραφή διαλογικών προγραµµάτων παρουσίασης (demos) αλγορίθµων γραφηµάτων Οπτικοποίηση λειτουργίας (animation) αλγορίθµων γραφηµάτων. 2 / 22

Αρχίζοντας µε το GraphWin # include <LEDA/ graphics / graphwin. h> u s i n g namespace leda ; i n t main ( ) { / / creates a graph window w i t h a new empty graph GraphWin gw ; / / d i s p l a y s the graph window at d e f a u l t p o s i t i o n gw. d i s p l a y ( ) ; / / e n t e r s the e d i t mode f o r changing / / the graph i n t e r a c t i v e l y gw. e d i t ( ) ; 3 / 22

Αρχίζοντας µε το GraphWin - 2 4 / 22

Αρχίζοντας µε το GraphWin - 3 5 / 22

Αποθήκευση γραφήµατος σε αρχείο # include <LEDA/ graphics / graphwin. h> u s i n g namespace leda ; i n t main ( ) { GRAPH< i n t, i n t > G; GraphWin gw(g) ; gw. d i s p l a y ( ) ; gw. e d i t ( ) ; / / Save the graph i n the f i l e / / " graph. gw" u s i n g the F i l e menu 6 / 22

Κατηγορήµατα Κορυφών 7 / 22

Κατηγορήµατα Πλευρών 8 / 22

Ανάγνωση γραφήµατος από αρχείο # include <LEDA/ graphics / graphwin. h> u s i n g namespace leda ; i n t main ( ) { GRAPH< i n t, i n t > G; G. read ( " graph. gw " ) ; GraphWin gw(g) ; / / the data l a b e l s of nodes and edges are displayed gw. set_node_label_type ( data_label ) ; gw. set_edge_label_type ( data_label ) ; gw. d i s p l a y ( ) ; gw. e d i t ( ) ; 9 / 22

Βασικές λειτουργίες του GraphWin GraphWin gw; δηµιουργεί ένα γραφοπαράθυρο gw το οποίο χρησιµοποιεί ένα δικό του γράφηµα G και παράθυρο W. GraphWin gw(graph& G); δηµιουργεί ένα παράθυρο γραφήµατος gw και το συσχετίζει µε το γράφηµα G. Αλλοι τρόποι δηµιουργίας γραφοπαραθύρων: GraphWin gw( window& W) ; GraphWin gw( graph& G, window& W) ; Ανάκτηση γραφήµατος και παραθύρου από γραφοπαράθυρο: window& W = gw. get_window ( ) ; graph& G = gw. get_graph ( ) ; 10 / 22

Βασικές λειτουργίες του GraphWin Ανοιγµα και εµφάνιση γραφοπαράθυρου: gw. d i s p l a y ( ) ; gw. d i s p l a y ( x, y ) ; / / l e f t upper corner i s displayed / / at p i x e l coordinates ( x, y ) ιαλογική επικοινωνία γραφοπαράθυρου: gw.edit (); Η διαλογική επικοινωνία τερµατίζεται όταν πατηθεί το πλήκτρο done ή επιλεχθεί το exit από το µενού αρχείων (file menu). 11 / 22

Παράδειγµα: edit-and-run # i n c lude <LEDA/ graphics / graphwin. h> # i n c lude <LEDA/ graph / graph_alg. h> u s i n g namespace leda ; i n t main ( ) { GraphWin gw ( " Leda Graph E d i t o r " ) ; gw. d i s p l a y ( window : : center, window : : center ) ; w h i l e ( gw. e d i t ( ) ) { graph& G = gw. get_graph ( ) ; i f ( PLANAR (G) ) gw. wait ( " T h i s graph i s planar. " ) ; e l s e gw. wait ( " T h i s graph i s not planar. " ) ; r e t u r n 0 ; 12 / 22

Ενηµέρωση/µεταβολή γραφήµατος στο GraphWin - 1 node gw. new_node ( const p o i n t& p ) ; / / creates a new node v w i t h d e f a u l t / / a t t r i b u t e s. The p o s i t i o n of v i s s e t to p. void gw. del_node ( node v ) ; / / removes v from the graph edge gw. new_edge ( node v, node w ) ; / / creates a new edge ( v,w) / / w i t h d e f a u l t a t t r i b u t e s void gw. del_edge ( edge e ) ; / / removes edge e from the graph void gw. clear_graph ( ) ; / / makes the graph empty 13 / 22

Ενηµέρωση/µεταβολή γραφήµατος στο GraphWin - 2 Παίρνουµε µια αναφορά στο γράφηµα που σχετίζεται µε το γραφοπαράθυρο και εφαρµόζουµε στο γράφηµα τις γνωστές λειτουργίες ενηµέρωσης. graph& G = gw. get_graph ( ) ; / / some update o p e r a t i o n s on G G. new_node ( ) ; G. del_edge ( e ) ; gw. update_graph ( ) ; / / Important!! Η τελευταία εντολή πληροφορεί το γραφοπαράθυρο ότι έχουν γίνει αλλαγές στο γράφηµα µε το οποίο συσχετίζεται ενηµέρωση εσωτερικών δοµών δεδοµένων γραφοπαράθυρου. 14 / 22

Λειτουργίες Κατηγορηµάτων Κορυφών/Πλευρών - 1 object := κορυφή ή πλευρά attrib := κατηγόρηµα attrib_type := τύπος κατηγορήµατος a t t r i b _ t y p e gw. g e t _ a t t r i b ( object x ) ; / / r e t u r n s the c u r r e n t value of a t t r i b u t e / / < a t t r i b > of object x a t t r i b _ t y p e gw. s e t _ a t t r i b ( object x, a t t r i b _ t y p e a ) ; / / s e t s the a t t r i b u t e a t t r i b of object x to a / / and r e t u r n s the p r e v i o u s value of the a t t r i b u t e void gw. s e t _ a t t r i b ( l i s t < object >& L, a t t r i b _ t y p e a ) ; / / s e t s a t t r i b u t e a t t r i b f o r a l l o b j e c t s i n L to a 15 / 22

Λειτουργίες Κατηγορηµάτων Κορυφών/Πλευρών - 2 void gw. r e s e t _ a t t r i b u t e s ( ) ; / / r e s e t s the a t t r i b u t e s of a l l o b j e c t s / / to t h e i r d e f a u l t values void gw. save_node_attributes ( ) ; void gw. save_edge_attributes ( ) ; / / save c u r r e n t node and edge a t t r i b u t e s void gw. r e s t o r e _ n o d e _ a t t r i b u t e s ( ) ; void gw. r e s t o r e _ e d g e _ a t t r i b u t e s ( ) ; / / r e s t o r e s node and edge a t t r i b u t e s / / to t h e i r saved values 16 / 22

Παράδειγµα graph& G = gw.get_graph(); gw.save_node_attributes(); gw.save_edge_attributes(); node v; forall_nodes(v, G) { if (gw.get_shape(v) == ellipse_node) { gw.set_shape(v, rectangle_node); gw.set_color(v, yellow); edge e; forall_edges(e, G) { if (gw.get_color(e) == blue) { gw.set_style(e, dashed); gw.set_color(e, black); gw.redraw(); leda_wait(5); gw.restore_node_attributes(); gw.restore_edge_attributes(); 17 / 22

Συναρτήσεις Χειρισµού (handlers) Χρησιµοποιούνται για να συσχετίσουν µια οποιαδήποτε λειτουργία µε τις εντολές ενηµέρωσης του GraphWin. Pre-handler: καλείται πριν από την ενηµέρωση. Post-handler: καλείται µετά από την ενηµέρωση. 18 / 22

Μια µέθοδος για on-line demos - 1 / / a l g o r i t h m to be i l l u s t r a t e d void d i s p l a y _ s c c ( GraphWin& gw) { graph& G = gw. get_graph ( ) ; node_array < i n t > comp_num(g) ; STRONG_COMPONENTS(G, comp_num ) ; node v ; f o r a l l _ n o d e s ( v, G) gw. s e t _ c o l o r ( v, c o l o r (comp_num [ v ] ) ) ; / / define post h a n d l e r s f o r graph o p e r a t i o n s void new_edge_handler ( GraphWin& gw, edge ) { d i s p l a y _ s c c (gw ) ; void del_edge_handler ( GraphWin& gw) { d i s p l a y _ s c c (gw ) ; void new_node_handler ( GraphWin& gw, node ) { d i s p l a y _ s c c (gw ) ; void del_node_handler ( GraphWin& gw) { d i s p l a y _ s c c (gw ) ; void i n i t _ g r a p h _ h a n d l e r ( GraphWin& gw) { d i s p l a y _ s c c (gw ) ; 19 / 22

Μια µέθοδος για on-line demos - 2 # include <LEDA/ graph / graph_alg. h> # include <LEDA/ graphics / graphwin. h> u s i n g namespace leda ; i n t main ( ) { GraphWin gw ; / / t e l l GraphWin which handlers to use gw. s e t _ i n i t _ g r a p h _ h a n d l e r ( i n i t _ g r a p h _ h a n d l e r ) ; gw. set_new_edge_handler ( new_edge_handler ) ; gw. set_del_edge_handler ( del_edge_handler ) ; gw. set_new_node_handler ( new_node_handler ) ; gw. set_del_node_handler ( del_node_handler ) ; gw. d i s p l a y ( ) ; gw. e d i t ( ) ; r e t u r n 0 ; 20 / 22

Επέκταση και Τροποποίηση Menus - 1 # include <LEDA/ graphics / graphwin. h> # include <LEDA/ graph / graph_alg. h> # include <LEDA/ graph / graph_misc. h> u s i n g namespace leda ; void d i s p l a y _ d f s ( GraphWin& gw) { graph& G = gw. get_graph ( ) ; node_array < i n t > dfsnum (G) ; node_array < i n t > compnum(g) ; l i s t <edge> T = DFS_NUM (G, dfsnum, compnum ) ; node v ; edge e ; f o r a l l _ n o d e s ( v,g) gw. s e t _ u s e r _ l a b e l ( v, s t r i n g ("%d ", dfsnum [ v ] ) ) ; f o r a l l ( e, T ) { gw. s e t _ c o l o r ( e, red ) ; gw. s e t _ w i d t h ( e, 2 ) ; 21 / 22

Επέκταση και Τροποποίηση Menus - 2 / / another a l g o r i t h m... void d i s p l a y _ s c c ( GraphWin& gw) {... i n t main ( ) { GraphWin gw ; gw. add_simple_call ( d i s p l a y _ d f s, " DFS " ) ; gw. add_simple_call ( d i s p l a y _ s c c, "SCC " ) ; gw. set_node_label_type ( i n d e x _ l a b e l ) ; gw. d i s p l a y ( ) ; gw. e d i t ( ) ; 22 / 22