Recitation #9. Q1 גרף מכוון מורכב מקבוצה של צמתים (nodes) ומקשתות מכוונות (arcs) המחברות ביניהם. כל קשת מכוונת יוצאת מצומת אחד ונכנסת לצומת אחר. ( בגרפים.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

1 Colorful XML: One Hierarchy Isn't Enough Authors : H. V. Jagadish, Laks V. S. Lakshmanan, Monica Scannapieco, Divesh Srivastava, Nuwee Wiwatwattana Presented.
מבוא למדעי המחשב לתעשייה וניהול
גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות.
מכונת מצבים תרגול מס' 4 Moshe Malka.
מתמטיקה בדידה תרגול 3.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
עצים ועצי חיפוש חומר קריאה לשיעור זה Chapter 5.5– Trees (91 – 97)
גרפים ממשקלים גרף ממשקל הוא גרף עם משקל לכל קשת עץ פורש הוא עץ שצמתיו הם כל הצמתים של הגרף וקשתותיו הן קשתות הגרף.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
יפעת קוליקנט, מכון ויצמן למדע1 פרק 7, אלגוריתם Ra לפתרון בעית הקטע הקריטי במערכות מבוזרות.
R. Bar-Yehuda © 1 קומבינטוריקה למדעי - המחשב – הרצאה #14 Graph theory – תורת הגרפים Chapter 1: PATHS IN GRAPHS – 1. מסלולים.
By Irina Polansky Deriving Mechanism Singularity Positions through the Graph Theory Duality Principle The Iby and Aladar Fleischman Faculty of Engineering.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Data Structures, CS, TAU, Splay Tree Splay Tree  מימוש של עץ חיפוש בינארי  מטרה לדאוג ל- Amortized Time  פעולה בודדת יכולה לקחת O(N)  אבל כל רצף.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Data Structures, CS, TAU, Splay Tree 1 Splay Tree - עץ חיפוש בינארי - מטרה לדאוג ל - Amortized Time - פעולה בודדת יכולה לקחת O(N) - אבל כל רצף M פעולות.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
Backpatching 1. תזכורת מתרגול קודם קוד ביניים - שפת הרביעיות שיטות לייצור קוד ביניים –שימוש בתכונת code –כתיבה ישירה ל-buffer של פקודות שיטות לתרגום מבני.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
גרפים - Graphs גרף G(V,E) מורכב מקבוצת צמתים V וקבוצת קשתות E.
תזכורת : אלגברה ליניארית מסקנה קלט : וקטורים פלט : האם u תלוי ליניארית ב קלט : מערכת של n משואות לינאריות ב -m נעלמים. פלט : פתרון, או שאין כזה. אלגוריתם.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תחשיב היחסים (הפרדיקטים)
מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. אג'נדה שאלות מבחינות חזרה על מימוש stream אפשרי 2.
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
Lecture 13 Maximal Accurate Forests From Distance Matrix.
(C) סיון טל גילוי מידע וזיהוי תבניות תרגול מס. 9 גילוי מידע וזיהוי תבניות תרגול מס. 9 דחיסת נתונים מהו קידוד תכונות של קידודים אי - שוויון קרפט.
מבוא מורחב למדעי המחשב בשפת Scheme תרגול 12. Outline Streams Infinite streams Stream implementation Questions from exams 2.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Practice session 6 Sequence Operations Partial Evaluation Lazy Lists.
Practice session 5 טיפוסים מורכבים Abstract Data Types הכנה לעבודה 3.
מבוא מורחב 1 Multiple representations of data. מבוא מורחב 2 Complex numbers imaginary real i 13 atan(2/3)
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
מבוא מורחב 1 Representing lists as binary trees
פס על כל העיר נורית זרחי.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
Additional Scheme examples
Tirgul 12 Trees 1.
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
תירגול 14: מבני נתונים דינאמיים
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
מבני נתונים עצים קרן כליף.
תכנות מכוון עצמים בשפת JAVA
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
Data Structures, CS, TAU, Splay Tree
Marina Kogan Sadetsky –
מבוא כללי למדעי המחשב תרגול 4
תרגול 8 תחומי הכרה פונקציות
תכנות מכוון עצמים ושפת JAVA
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
מבוא לתכנות ב- Java תרגול 10 - רשימות מקושרות.
Presentation transcript:

Recitation #9

Q1 גרף מכוון מורכב מקבוצה של צמתים (nodes) ומקשתות מכוונות (arcs) המחברות ביניהם. כל קשת מכוונת יוצאת מצומת אחד ונכנסת לצומת אחר. ( בגרפים בהם נעסוק בשאלה זו אין לולאות עצמיות, כלומר אין קשת היוצאת ונכנסת אל אותו צומת ). אנו נניח כי צמתי הגרף ממוספרים במספרים טבעיים השונים זה מזה ( אך אינם בהכרח רציפים ). לשם פשטות, כאשר נתייחס לצומת הממוספר במספר I נקרא לו צומת i. לדוגמא : רשימת סמיכות (incidence list) של צומת i בגרף מכוון היא רשימה אשר האיבר הראשון בה הוא i ושאר איבריה הם כל הצמתים בגרף אליהם נכנסת קשת היוצאת מצומת i. כך למשל הרשימה ( ) היא רשימת סמיכות של צומת 1 בגרף 0G. אנו נייצג גרף מכוון על ידי רשימה אשר איבריה הם רשימות הסמיכות של כל צמתי הגרף. כך, למשל, הגרף G0 שלעיל ייוצג כך : ( ( ) (2 1 4) (3 1) (4 1 2) (5) ( ) (7) (9) ) ) ‘(define G0 שימו לב כי רשימת הסמיכות של צומת i אשר לא יוצאות ממנו קשתות מכוונות ( כמו למשל הצמתים 5,7,9 בגרף G0) מכילה את i בלבד.

Q1.a א. ( עליך להשלים את הגדרת הפרוצדורה (nodes g) המקבלת כפרמטר גרף ביצוג שהגדרנו ומחזירה את רשימת הצמתים שלו. למשל : לדוגמא : ( ( ) (2 1 4) (3 1) (4 1 2) (5) ( ) (7) (9) ) ) ‘(define G0 > (nodes G0) ( )

Solution Q1.a (define (nodes g) (map car g))

Q1.b ב. אנו נייצג קשת מכוונת כזוג : קשת המכוונת מצומת i לצומת j תיוצג על ידי הזוג (i. j). עליך להשליך את הגדרת הפרוצדורה arcs המקבלת כפרמטר את הגרף g ומחזירה את רשימת כל הקשתות של g. לדוגמא :  (arcs G0) ( (1.2) (1.3) (1.4) (2.1) (2.4) (3.1) (4.1) (4.2) (6.1) (6.7) (6.9) ) הפרוצדורה משתמשת בפרוצדורת העזר הפנימית incidence-list-to-arcs- list. פרוצדורה פנימית זו מקבלת כפרמטר יחיד רשימת סמיכות l של צומת כלשהוא i בגרף. היא מחזירה רשימה הכוללת את כל הקשתות המכוונות מ -i לצמתים בגרף. לדוגמא :  (incidence-list-to-arcs-list '( )) ( (1.2) (1.3) (1.4))  (incidence-list-to-arcs-list '(5)) ()

Q1.b (define (arcs g) (define (incidence-list-to-arc-list l) ______________________________________________________________________ ______________________________________________________________________) (accumulate _______________________________________________________________________ ________________________________________________________________________))

Q1.b solution (define (arcs g) (define (incidence-list-to-arc-list l) (map (lambda (x) (cons (car l) x)) (cdr l))) (accumulate append null (map incidence-list-to-arc-list g)))

Q1.C עליך להשלים את מימוש הפרוצדורה (delete-node i g) המקבלת שני פרמטרים : צומת i וגרף g. הפרוצדורה מחזירה את הגרף המתקבל מ -g כאשר מוחקים ממנו את הצומת i ואת כל הקשתות היוצאות מ i או נכנסות אליו. לדוגמא :  (delete-node 1 G0) ( (2 4) (3) (4 2) (5) (6 7 9) (7) (9)) (define (delete-node i g) (map (lambda (lst) ____________________________________________ ____________________________________________________________) (filter_____________________________________________________ g ) )

Q1.C SOLUTION (define (delete-node i g) (map (lambda (lst) (filter (lambda (x) (not (= x i))) lst)) (filter (lambda (lst) (not (= (car lst) i))) g)))

Q1.D עליך להשלים את מימוש הפרוצדורה (delete-list-of-nodes l g) המקבלת שני פרמטרים : רשימת צמתים l וגרף g. הפרוצדורה מחזירה את הגרף המתקבל מ -g כאשר מוחקים ממנו את כל הצמתים ב l. (define (delete-list-of-nodes l g) (accumulate ____________________________________________________________ ____________________________________________________________ __________________________________________________________))

Q1.D SOLUTION (define (delete-list-of-nodes l g) (accumulate delete-node g l))

Q1.E בסעיף זה עליך להשלים את מימוש הפרוצדורה (nodes-with-arcs-to i g). הפרוצדורה מקבלת שני פרמטרים : צומת i וגרף g. הפרוצדורה מחזירה את רשימת הצמתים ב -g אשר יוצאת מהן קשת אל צומת i. לדוגמא :  (nodes-with-arcs-to 1 G0) ( )  (nodes-with-arcs-to 6 G0) () (define (nodes-with-arcs-to i g) (map _______________________________________________________ (filter__________________________________________________ (arcs g))))

Q1.E SOLUTION (define (nodes-with-arcs-to i g) (map car (filter (lambda (arc) (= (cdr arc) i)) (arcs g))))

Q1.F קבוצה בלתי תלויה (independent set) בגרף היא קבוצת צמתים של הגרף אשר הגרף אינו מכיל שום קשת בין שניים מהם. לדוגמא, קבוצת הצמתים {1,5,7,9} היא קבוצה בלתי תלויה בגרף G0. בסעיף זה נממש את הפרוצדורה (inedpendent-set g) המקבלת כפרמטר גרף g ומחזירה רשימה של צמתים המהוים קבוצה בלתי תלויה של g. המימוש מבוסס על הרעיון הבא. בכל שלב אנו בוחרים צומת כלשהוא מצמתי הגרף, i, מוסיפים אותו לקבוצה הבלתי תלויה שאנו בונים, ומוחקים אותו ואת כל הצמתים המחוברים אליו בקשת מן הגרף ( בין אם הקשת יוצאת מ i ובין אם היא נכנסת אליו ). כך אנו ממשיכים, עד שאנו מגיעים לגרף ריק. הפרוצדורה independent-set מבצעת תהליך זה באופן רקורסיבי. עליך להשלים מימוש פרוצדורה זו. (define (independent-set g) (if (null? g) null (cons __________________________________ (independent-set ___________________________________________________________________ __________________________________________________________________ __________________________________________________________________))))

Q1.F SOLUTION (define (independent-set g) (if (null? g) null (cons (caar g) (independent-set (delete-list-of-nodes (append (car g) (nodes-with-arcs-to (caar g) g)) g)))))

Q2 הפרוצדורה (suffix lst k) מקבלת שני פרמטרים : רשימה lst, ומספר שלם k. הפרוצדורה מחזירה את הסיפא (suffix) ה k- ית של הרשימה, כלומר רשימה הכוללת את כל איברי lst למעט k האיברים הראשונים. הפרוצדורה (prefix lst k) מקבלת אף היא שני פרמטרים lst ו k. היא מחזירה את הרישא ה k- ית של הרשימה, כלומר רשימה הכוללת את k האיברים הראשונים של lst. בשני המקרים ניתן להניח ש -k הוא מספר שלם בתחום : [0, (length lst)]. לדוגמא :  (define lst '(a b c d e f g h))  (suffix lst 3) (d e f g h)  (suffix lst 1) (b c d e f g h)  (suffix lst 0) (a b c d e f g h)  (prefix lst 0) ()  (prefix lst 4) (a b c d)

Q2.a (define (suffix lst k) (if (= k 0) ____________________________________________________________ ___________________________________________________________)) (define (prefix lst k) (if (= k 0) ____________________________________________________________ ___________________________________________________________))

Q2.a solution (define (suffix lst k) (if (= k 0) lst (suffix (cdr lst) (- k 1)))) (define (prefix lst k) (if (= k 0) null (cons (car lst) (prefix (cdr lst) (- k 1)))))

Q2.b הפרוצדורה (rotate lst k) מקבלת שני פרמטרים : רשימה lst, ומספר שלם k בתחום [0, (length lst)]. היא מחזירה רשימה המתקבלת מ lst על ידי סיבוב איברי lst ( שמאלה ) ב k מקומות. לדוגמא :  (define lst '(a b c d e f g h))  (rotate lst 1) (b c d e f g h a)  (rotate lst 4) (e f g h a b c d)  (rotate lst 0) (a b c d e f g h) (define (rotate lst k) ________________________________________________________________________ _______________________________________________________________________)

Q2.b Solution (define (rotate lst k) (append (suffix lst k) (prefix lst k)))

Q2.C יהיו l1 ו l2 שתי רשימות של סימבולים. אנו נאמר כי l1 ו l2 שוות ציקלית cyclic-equal) אם ניתן לקבל את הרשימה השניה על ידי סיבוב של הרשימה השניה ( או להיפך ). לדוגמא : > (is-cyclic-equal? '(a b c d) '(c d a b)) #t > (is-cyclic-equal? '(a b c d) '(d a b c)) #t > (is-cyclic-equal? '(a b c d) '(c a b d)) #f הפרדיקט (is-cyclic-equal? l1 l2) מקבל כקלט שתי רשימות של סימבולים באורך שווה ומחזיר #t אם הן שוות ציקלית, או #f אחרת. הפרדיקט ממומש באופן איטרטיבי על ידי קריאה לפרוצדורה פנימית. עליך להשלים את מימוש פרוצדורה פנימית זו בתבנית הקוד שלהלן.

Q2.C (define (is-cyclic-equal? l1 l2) (define (iter-helper lst k) (cond ( (= k (length lst)) _________) (_____________________________________ #t) (else (iter-helper ________________________ _______________________________________)))) (iter-helper l2 0))

Q2.C Solution (define (is-cyclic-equal? l1 l2) (define (iter-helper lst k) (cond ( (= k (length lst)) #f) ( (equal? l1 lst) #t) (else (iter-helper (rotate lst 1) (+ k 1))))) (iter-helper l2 0))

Q2.D הפרוצדורה cyclic-equal-to-any מקבלת רשימה אחת או יותר של סימבולים ( ניתן להניח כי כל הרשימות הן באותו אורך ). הפרוצדורה מחזירה פרדיקט, המצפה לרשימת סימבולים lst ( מאותו אורך ) ומחזיר #t אם lst זהה ציקלית לאחת או יותר מן הרשימות איתן קראנו ל cyclic-equal-to- any. לדוגמא :  (define proc (cyclic-equal-to-any '(one two three) '(alpha beta gamma)))  (proc '(two three one)) #t  (proc '(gamma alpha beta)) #t  (proc '(I like Mike)) #f

Q2.D (define (cyclic-equal-to-any lst1. other-lists) (define (compare-with-all-lists lst) (let ((all-lists (cons lst1 other-lists))) (accumulate ______________________________________________________ _______________________________________________________ (map___________________________________________________ ________________________________________________)))) ____________________________________________________________)

Q2.D Solution (define (cyclic-equal-to-any lst1. other-lists) (define (compare-with-all-lists lst) (let ((all-lists (cons lst1 other-lists))) (accumulate (lambda (x y) (or x y)) #f (map (lambda (l) (is-cyclic-equal? lst l)) all-lists)))) compare-with-all-lists)