גרפים - Graphs גרף G(V,E) מורכב מקבוצת צמתים V וקבוצת קשתות E.

Slides:



Advertisements
Similar presentations
1 Colorful XML: One Hierarchy Isn't Enough Authors : H. V. Jagadish, Laks V. S. Lakshmanan, Monica Scannapieco, Divesh Srivastava, Nuwee Wiwatwattana Presented.
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות.
Recitation #9. Q1 גרף מכוון מורכב מקבוצה של צמתים (nodes) ומקשתות מכוונות (arcs) המחברות ביניהם. כל קשת מכוונת יוצאת מצומת אחד ונכנסת לצומת אחר. ( בגרפים.
Data Structures: Sorts, CS, TAU 1 שמושים ביישומים רבים יש n רשומות, לכל רשומה מפתח: K 1, …..,K n רוצים לסדר את הרשומות כך שהמפתחות לא בסדר יורד (יתכנו.
פעולות מילון Insert, Delete, Search Binary Search Tree, AVL, 2-3 Tree, Skip List O(log n) האם יש מבנה עם סבוכיות (1)O? לא למפתח כלשהו.
Graph Toolkit G-2 group Volansky Vered Hadas Yaron Ben Ezra Asaf Sharov Artyom.
מבני נתונים 1 – מבנה התרגולים
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
עצים ועצי חיפוש חומר קריאה לשיעור זה Chapter 5.5– Trees (91 – 97)
גרפים ממשקלים גרף ממשקל הוא גרף עם משקל לכל קשת עץ פורש הוא עץ שצמתיו הם כל הצמתים של הגרף וקשתותיו הן קשתות הגרף.
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
R. Bar-Yehuda © 1 קומבינטוריקה למדעי - המחשב – הרצאה #14 Graph theory – תורת הגרפים Chapter 1: PATHS IN GRAPHS – 1. מסלולים.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
- אמיר רובינשטיין Union-Find 1. הגדרה: מבנה נתונים, אשר בהינתן אוסף איברים המחולקים לקבוצות זרות, מאפשר ביצוע הפעולות הבאות: Find(i) – החזר.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
2 Suffix Tree: Definition Suffix tree T על מחרוזת S שגודלה n, הוא עץ מכוון עם בדיוק n עלים ממוספרים מ -1 עד n. לכל צומת פנימית ( חוץ מהשורש ) יש לפחות.
1 Data Structures, CS, TAU, Splay Tree Splay Tree  מימוש של עץ חיפוש בינארי  מטרה לדאוג ל- Amortized Time  פעולה בודדת יכולה לקחת O(N)  אבל כל רצף.
1 Graph Algorithms Minimum Spanning Trees (MST) Union - Find Dana Shapira נדבר השיעור על עצים פורשים. כל הגרפים יהיו לא מכוונים וקשירים, לכן בהכרח יש עץ.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
Data Structures, CS, TAU, Splay Tree 1 Splay Tree - עץ חיפוש בינארי - מטרה לדאוג ל - Amortized Time - פעולה בודדת יכולה לקחת O(N) - אבל כל רצף M פעולות.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
Synchronizers - מסנכרנים הדמיית רשת סינכרונית ברשת אסינכרונית.
בעיות חיפוש – informed search בינה מלאכותית יעל נצר.
תזכורת: גרפים גרף (G=(V,E V|=n, |E|=m| מכוון \ לא מכוון דרגה של קדקד
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
תכנות תרגול 14 שבוע:
תכנות תרגול 14 שבוע : רשימות מקושרות ישנו מבנה נתונים אשר מאפשר ישנו מבנה נתונים אשר מאפשר לנו לבצע את הוספת האיברים בצורה נוחה יותר. מבנה זה.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
מבוא כללי למדעי המחשב רשימות מקושרות
שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה.
The Cyclic Multi-peg Tower of Hanoi מעגלי חד-כווני סבוכיות הפתרון בגרסאות עם יותר מ-3 עמודים.
1 שמושים ביישומים רבים יש n רשומות, לכל רשומה מפתח: K 1,…..,K n רוצים לסדר את הרשומות כך שהמפתחות לא בסדר יורד (יתכנו כפולים) קריטריונים ליעילות: לא תמיד.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
R. Bar-Yehuda © 1 קומבינטוריקה למדעי - המחשב – הרצאה #16 EULER GRAPHS גרפים אויילרים מבוסס על הספר : S. Even, "Graph Algorithms",
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
תזכורת : אלגברה ליניארית מסקנה קלט : וקטורים פלט : האם u תלוי ליניארית ב קלט : מערכת של n משואות לינאריות ב -m נעלמים. פלט : פתרון, או שאין כזה. אלגוריתם.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
Lecture 13 Maximal Accurate Forests From Distance Matrix.
- אמיר רובינשטיין 1 מערכים - Arrays מערך חד-מימדי מערך דו-מימדי סיבוכיות גישה לאיבר גישה לאיברסיבוכיות מקום מימד O(1)base+i·typeO(N)O(N)A[N]
- אמיר רובינשטיין מיונים - Sorting משפט : חסם תחתון על מיון ( המבוסס על השוואות בלבד ) של n מפתחות הינו Ω(nlogn) במקרה הגרוע ובממוצע. ניתן לפעמים.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Costs and Filters Dr. Avi Rosenfeld Department of Industrial Engineering Jerusalem College of Technology
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
Presentation prepared by Rakefet Menda
מבוא למדעי המחשב סיבוכיות.
תירגול 14: מבני נתונים דינאמיים
הרצאה 06 רשימות מקושרות קרן כליף.
ממשקים - interfaces איך לאפשר "הורשה מרובה".
Data Structures, CS, TAU, Splay Tree
בעיות נוספות ב-NPC.
Marina Kogan Sadetsky –
תרגול 11 NP complete.
A* and AO* Search Algorithm
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
חזרה חלקית על תרגול 12 גרף G=(V,E)
מבוא לתכנות ב- Java תרגול 10 - רשימות מקושרות.
Presentation transcript:

amirrub@cs - אמיר רובינשטיין גרפים - Graphs גרף G(V,E) מורכב מקבוצת צמתים V וקבוצת קשתות E. V={u,v,w,x,y} E={(v,v), (u,v), (v,x), (u,x), (u,y)} |V| = n , |E| = m סוגי גרפים - גרף מכוון / לא מכוון - גרף פשוט / מולטי גרף - עם או בלי לולאות עצמיות - גרף קשיר v y x w u קשר בין n ל- m בגרף פשוט לא מכוון ללא לולאות עצמיות – מכוון עם לולאות עצמיות - amirrub@cs - אמיר רובינשטיין אמיר

amirrub@cs - אמיר רובינשטיין ייצוגים של גרפים א. מטריצת סמיכויות. ב. רשימת סמיכויות. amirrub@cs - אמיר רובינשטיין

פעולות על גרפים רשימת סמיכויות מטריצת סמיכויות הפעולה מעבר על רשימת האיבר i בדיקת M[i][j] בדיקת קיום קשת (i,j) (מספר שכני i )O O(1) מעבר על שורה i במטריצה מעבר על כל שכני i O(n) בדיקה אם הקשת קיימת והוספה/הסרה הוספת/הסרת קשת O(m+n) O(n2) סיבוכיות מקום ואם רוצים להוסיף קשת שידוע שהיא לא במבנה? amirrub@cs - אמיר רובינשטיין

רשימת סמיכויות – שיפורים - הרשימה תהיה ממוינת - במקום רשימה עץ חיפוש מאוזן - ייצוג משולב (מטריצה עם מצביע מכל תא דלוק לאיבר ברשימה המתאימה, שתהיה דו כוונית). כאן הזכרון n2, מציאת קשת והוספה/הסרה O(1), מציאת שכנים O(d). מה זה משפר? (יכול לשפר רק את הפעולות הראשונה והשלישית) - רשימה ממוינת – יכול לשפר את הפעולה Find(i,j) (אם הגענו לקשת שהולכת לצומת גדול יותר אז מפסיקים את החיפוש ומחזירים "אין קשת"), אבל זה לא עוזר במקרה הגרוע. - עץ - הופך את הפעולות לזמן לוגריתמי. אם הוספת דורשת O(1) (כשידוע שהקשת לא במבנה) והגרף מאוד דינמי, אז זה פחות טוב. - ייצוג משולב פחות טוב בזכרון. amirrub@cs - אמיר רובינשטיין

פתרון ראשון – Union/Find גרף קשיר גרף לא מכוון נקרא קשיר אם בין כל זוג קדקדים u ו- v קיים מסלול uv. (לגבי גרף מכוון קיים המושג קשיר היטב – אם יש מסלול בשני הכיוונים). בעיה: מצא ייצוג לגרף לא מכוון שיאפשר לקבוע ביעילות האם הגרף קשיר או לא. זמן אתחול לא נכלל. פתרון ראשון – Union/Find x=n //מספר רכיבי הקשירות for each (u,v) E if ( Find(u)  Find(v) ) Union(u,v) x-- if x=1 return “קשיר“ else return “לא קשיר" O(m log*n) amirrub@cs - אמיר רובינשטיין

פתרון שני ב- O(m) נבצע סריקה מקדקד מסויים – "נצבע" את כל הצמתים שניתן להגיע אליהם ממנו (למעשה זה BFS). אם צבענו n צמתים הגרף קשיר, אחרת לא קשיר. מטריצה או רשימה? עדיף רשימה בגלל שהמעבר על שכנים יעיל יותר. שלב ראשון: נבדוק אם לצומת 1 יש שכנים. אם לא הגרף אינו קשיר. מיזוג רכיבי קשירות ע"י מיזוג רשימות שכנים: - מספר רכיבי קשירות x=n// אתחל מצביע p לתחילת רשימת השכנויות של צומת 1. סמן את 1 כממוזג. כל עוד pNULL אם הצומת u המוצבע ע"י p אינו ממוזג עדיין: - הוסף את רשימת u לסוף רשימת 1. - סמן את u כממוזג. - קדם את המצביע p לאיבר הבא ברשימת 1. - x--. קדם את p איבר אחד קדימה. - אם x==1 הדפס "קשיר" אחרת הדפס "לא קשיר". בשביל שזה יהיה ב- O(1) נחזיק מצביעים לסופי הרשימות amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין פתרון שני ב- O(m) ואם רוצים גם להחזיר כמה רכיבי קשירות ישנם בגרף? נחזיק מונה למספר הרכיבים. לאחר סיום הפרוצדורה הנ"ל שהתחילה מצומת 1 נגדיל את המונה, ונעבור לצומת הבא שלא מוזג, ונעשה אותו דבר, עד שנסיים. המעבר לצומת הבא שלא מוזג לוקח O(n). ניתן לשפר ע"י החזקת רשימה מקושרת במקום מערך, וכאשר צומת ממוזג נמחק אותו מהרשימה. כך מעבר לצומת הבא שלא מוזג עדיין לוקח O(1). האם זה משפר באמת? אם הגרף קשיר  mn-1 אז זה לא משפר. amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין אלגוריתמים בגרפים בהרצאות: 1. מיון טופולוגי: O(m+n). 2. מציאת עץ-פורש-מינימום: O(m+nlogn), O(n2). בתרגול: 3. מציאת מסלול קל ביותר מצומת נתון: O((m+n)logn), O(n2). מציאת מסלול קל ביותר - Shortest Path נתון: גרף G(V,E) ופונקציה w המגדירה לכל קשת משקל אי-שלילי. משקלו של מסלול מוגדר כסכום משקלי הקשתות עליו. מטרה: למצוא מסלול קל ביותר מצומת מסויים s לכל צומת אחר בגרף. לדוגמא: מהם המסלולים הקלים ביותר מ- s לשאר צמתי הגרף? amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין מציאת מסלול קל ביותר נתון: גרף G(V,E) ופונקציה w המגדירה לכל קשת משקל אי-שלילי. משקלו של מסלול מוגדר כסכום משקלי הקשתות עליו. מטרה: למצוא מסלול קל ביותר מצומת מסויים s לכל צומת אחר בגרף. האלגוריתם של Dijkstra amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין האלגוריתם של Dijkstra סיבוכיות: 1. רשימת סמיכויות ומערך של ערכי d(v). O(n2 ) + O(m) = O(m+ n2) = O(n2) 2. במקום מערך נשמור את ערכי d(v) בערימה. O(nlogn) + O(mlogn) = O((m+n) logn) 3א' 3ב' 3א' 3ב' amirrub@cs - אמיר רובינשטיין