תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר

Slides:



Advertisements
מצגות קשורות
הכרת תוכנת בקרים. כניסה לתוכנה תתבצע בשלבים הבאים: 1
Advertisements

תכנות בשפת C תרגול 11 - קבצים.
הרצאה 02 סוגי משתנים קרן כליף.
יהי X משתנה מקרי חיובי. אזי
ייצוגים שונים של פונקציה
יצירת מקרו הפעלת מקרו יצירת לחצן / פקד דוגמה מסכמת
בקרת Sliding Mode של מערכת עקיבה
הרצאה 12: מיזוג, מיון ושימושים לפעולות על קבוצות - המשך
מבוא לתכנות ב-JAVA מעבדה 1
טיפים מנצחים: לחפש ולמצוא במהירות ובדיוק
המחלקה להוראת המדעים, מכון ויצמן למדע, רחובות
תרגול 11: רקורסיה ופיתוח טלסקופי
Mitug.com- אתר מיתוג של פטריק
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
מיונים (SORTS) שמושים ביישומים רבים
ייצוג קבוצות מתוחכם עצי חיפוש בינאריים BINARY SEARCH TREES
מבוא למדעי המחשב מ' - תירגול 9
יצוג קבוצות מתוחכם עצי חיפוש בינאריים BINARY SEARCH TREES
תירגול 10: מבנים (structs) וקבצים
Marina Kogan Sadetsky –
רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©
Jump tables, review questions
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
Computer Programming תרגול 1 Summer 2016
תירגול 11: מיונים וחיפוש בינארי
נערך ע"י אריק הוד הגימנסיה העברית הרצליה
המחלקה להוראת המדעים, מכון ויצמן למדע, רחובות

תכנות בשפת C תרגול 8 רקורסיה
נכתב ע"י אלכס קוגן ניתוח תחבירי Top-Down נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
שם ביה"ס, רשות: מקיף ה' אשדוד שם המורה: פולינה צ'יגרינסקי שם המדריכה:
Engineering Programming A
תירגול 8:מצביעים והקצאה דינאמית
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוא למדעי המחשב הרצאה 9: רקורסיה
תרגול 6: פונקציות, סוגי משתנים, top-down design
S. Even, "Graph Algorithms", Computer Science Press, 1979
פתרון של מערכת משוואות לינארית
כל הזכויות שמורות לגבריאל אנקרי © 2017
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
תורת הקומפילציה תרגול 9: תרגום לקוד ביניים
מבוא לתכנות למערכות מידע
Computer Architecture and System Programming Laboratory
אלגוריתמי מיון רקורסיביים
המשך תכנות מונחה עצמים תרגול מס' 9.
כל הזכויות שמורות לגבריאל אנקרי © 2017
Marina Kogan Sadetsky –
Solving Simultaneous Linear Equations Using GPU
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
מבוא לתכנות ב- JAVA מעבדה 4
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
Ci,j=Σκ Ai,κxBκ,j מכפלת מטריצות מכפלת מטריצות ב- O(n3)
Introduction to Programming in C
תרגול 12: backtracking.
מצביעים Pointers – המשך...
Data Structures, CS, TAU, Perfect Hashing
מעבדה 2- עיצוב (עבור חלק ג)
מיכאל קרפ * ניתן להעתיק/לשכפל באופן חופשי
תרגול מס' 7: Memoization Quicksort תרגילים מתקדמים ברקורסיה
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
רקורסיה ופתרונות רקורסיביים
והתאמתה למאפייני הסטודנטים
Java Programming רשימות מקושרות - המשך
הפונקציה מחזירה את מספר התווים במחרוזת נתונה.
Engineering Programming A
תמליל מצגת:

234127 - מבוא למחשב בשפת MATLAB תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל

תרגיל בנושא מיונים סדרת מספרים תיקרא עולה אם כל איבר גדול או שווה מקודמו. באופן דומה נגדיר שסדרה היא יורדת אם כל איבר קטן או שווה מקודמו. סדרת מספרים תיקרא ביטונית אם היא שרשור של שתי סדרות X ו-Y, כאשרX היא סדרה עולה ו-Y היא סדרה יורדת. דוגמה: הסדרה [3,12,15,6,2] היא סדרה ביטונית, כאשרX יכולה להיות [3,12] או [3,12,15]. בנוסף, עבור ווקטור שורה X נגדיר את ההיפוך של X כווקטור המתקבל מהיפוך הסדר של איברי X. דוגמה: אם X = [2,5,8] אזי ההיפוך של X הוא [8,5,2]. השלימו את פקודת המטלאב הבאה, אשר בהינתן וקטורי שורה A ו-B המכילים סדרות עולות, מייצרת סדרה ביטוניתC המתקבלת משרשור ההיפוך שלB ל-A. לדוגמה: אם A=[3,12] ו-B=[2,6,15], אז C תהיה הסדרה [3,12,15,6,2]. C = ; תרגול חזרה כל הזכויות שמורות ©

תרגיל בנושא מיונים סדרת מספרים תיקרא עולה אם כל איבר גדול או שווה מקודמו. באופן דומה נגדיר שסדרה היא יורדת אם כל איבר קטן או שווה מקודמו. סדרת מספרים תיקרא ביטונית אם היא שרשור של שתי סדרות X ו-Y, כאשרX היא סדרה עולה ו-Y היא סדרה יורדת. דוגמה: הסדרה [3,12,15,6,2] היא סדרה ביטונית, כאשרX יכולה להיות [3,12] או [3,12,15]. בנוסף, עבור ווקטור שורה X נגדיר את ההיפוך של X כווקטור המתקבל מהיפוך הסדר של איברי X. דוגמה: אם X = [2,5,8] אזי ההיפוך של X הוא [8,5,2]. השלימו את פקודת המטלאב הבאה, אשר בהינתן וקטורי שורה A ו-B המכילים סדרות עולות, מייצרת סדרה ביטוניתC המתקבלת משרשור ההיפוך שלB ל-A. לדוגמה: אם A=[3,12] ו-B=[2,6,15], אז C תהיה הסדרה [3,12,15,6,2]. C = [A B(end:-1:1)] ; תרגול חזרה כל הזכויות שמורות ©

המשך התרגיל השלימו את הפונקציה bitonSplit שלהלן המקבלת סדרה ביטונית C ומחזירה שתי סדרות עולות A ו- B כך שמתקיים: C מתקבלת משרשור ההיפוך שלB ל-A. A היא בעלת אורך מקסימלי אפשרי. >> C = [3 12 15 15 6 2]; >> [A B] = bitonSplit(C) A = [3 12 15 15] B = [2 6] function [A, B] = bitonSplit(C) % split bitonic sequence to 2 sorted sequences ind = max(____________________);%index of split point len = length(C); A = ______________________________; B = ______________________________; לדוגמה: תרגול חזרה כל הזכויות שמורות ©

המשך התרגיל השלימו את הפונקציה bitonSplit שלהלן המקבלת סדרה ביטונית C ומחזירה שתי סדרות עולות A ו- B כך שמתקיים: C מתקבלת משרשור ההיפוך שלB ל-A. A היא בעלת אורך מקסימלי אפשרי. >> C = [3 12 15 15 6 2]; >> [A B] = bitonSplit(C) A = [3 12 15 15] B = [2 6] function [A, B] = bitonSplit(C) % split bitonic sequence to 2 sorted sequences ind = max( find(max(C)==C) );%index of split point len = length(C); A = C(1:ind) ; B = C(end:-1:ind+1) ; לדוגמה: תרגול חזרה כל הזכויות שמורות ©

המשך התרגיל ממשו את הפונקציה bitSort המקבלת סדרה ביטונית C ומחזירה סדרה ממויינת (בסדר עולה) של אברי C. לדוגמה: >> C = [3 5 8 12 7 2 1]; >> bitSort(C) ans = [1 2 3 5 7 8 12] לצורך מימוש הפונקציה bitSort מותר להשתמש רק בפונקציות העזר הבאות: פונקציית המיזוג merge שהוצגה בהרצאה 13 (ובפרט אין צורך לכתוב אותה מחדש) והפונקציהbitonSplit מהסעיף הקודם. תזכורת: הפונקציה merge מקבלת שני מערכים ממויינים A ו-B וממזגת אותם למערך ממויין חדש C. פתרון: function D = bitSort(C) [A, B] = bitonSplit(C) D = merge(A,B) תרגול חזרה כל הזכויות שמורות ©

תזכורת: חיפוש בינארי במערך הבעיה: נתון מערך a ובו n מספרים ממוינים בסדר עולה. יש למצוא האם מספר x מופיע במערך, והיכן. פתרון רקורסיבי: בסיס הרקורסיה: אם המערך ריק אז x לא נמצא. אחרת: אם x שווה לאיבר האמצעי, אזי מצאנו את x. אם x קטן מהאמצעי, נחפש את x בתת המערך השמאלי. אם x גדול מהאמצעי, נחפש את x בתת המערך הימני. תרגול חזרה כל הזכויות שמורות ©

תרגיל בנושא רקורסיה בשאלה זו נגדיר וריאציה של בעיית החיפוש הבינארי שראיתם בהרצאה (הרצאה מס' 10) שתיקרא rfind. הקלט לבעיה החדשה כולל מערך ממויין של מספרים שייקרא a, איבר אותו מחפשים שייקרא x וגבולות low ו-high שמגדירים את איזור החיפוש במערך (ומקיימים 1 ≤ low ≤ high ≤ length(a)). יש להחזיר מספר k המוגדר באופן הבא: אם x נמצא בתת המערך a(low:high), אז k הוא אינדקס מתוך קבוצת הערכים low:high כך ש-a(k) שווה ל-x. אחרת, k=0. >> a = [-1, 4, 6, 8, 10.5]; >> rfind(a,8,2,5) ans = 4 >> rfind(a,8,1,3) ans = 0 לדוגמה: תרגול חזרה כל הזכויות שמורות ©

המשך התרגיל השלימו את הקוד של הפונקציה הרקורסיבית rfind במקומות החסרים. function k = rfind(a,x,low,high) if high<low ; return; end mid = round( ); if a(mid) == x k = mid; if a(mid)> x k = rfind(a,x, , ); else תרגול חזרה כל הזכויות שמורות ©

המשך התרגיל השלימו את הקוד של הפונקציה הרקורסיבית rfind במקומות החסרים. function k = rfind(a,x,low,high) if high<low k = 0 ; return; end mid = round( (high+low)/2 ); if a(mid) == x k = mid; if a(mid)> x k = rfind(a,x, low , mid-1 ); else k = rfind(a,x, mid+1 , high ); תרגול חזרה כל הזכויות שמורות ©

המשך התרגיל נתון מערך מספרים ממוין בשםarr בעל אורך כלשהו, המכיל את המספר 7. איך תשתמשו בפונקציה rfind על מנת למצוא אינדקס k כך ש arr(k)=7? פתרון: k = rfind(arr,7,1,length(arr)) יהי T(n) מספר הפעמים שהפונקציה rfind לעיל מבצעת קריאה לפונקציה round, כאשר גודל תת המערך הוא n (n = high-low+1), וכאשר האיבר x אותו מחפשים אינו נמצא בתת המערך. השלימו את המשוואות הבאות, ונמקו בקצרה את נכונותן. T(1) = T(n) ≤ כתבו ביטוי רקורסיבי עבור T(n) תרגול חזרה כל הזכויות שמורות ©

המשך התרגיל נתון מערך מספרים ממוין בשםarr בעל אורך כלשהו, המכיל את המספר 7. איך תשתמשו בפונקציה rfind על מנת למצוא אינדקס k כך ש arr(k)=7? פתרון: k = rfind(arr,7,1,length(arr)) יהי T(n) מספר הפעמים שהפונקציה rfind לעיל מבצעת קריאה לפונקציה round, כאשר גודל תת המערך הוא n (n = high-low+1), וכאשר האיבר x אותו מחפשים אינו נמצא בתת המערך. השלימו את המשוואות הבאות, ונמקו בקצרה את נכונותן. T(1) = 1 T(n) ≤ כתבו ביטוי רקורסיבי עבור :T(n) תרגול חזרה כל הזכויות שמורות ©

תרגיל בנושא מטריצות מטריצת הילברט מסדר n היא מטריצהH בגודלnxn המקיימת H(i,j)=1/(i+j-1) לכל i,j. לדוגמה, מטריצת הילברט מסדר 5 היא המטריצה הבאה: H = 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 כתבו פונקציה המקבלת כקלט מספר טבעיn ומחזירה את מטריצת הילברט מסדר n. תרגול חזרה כל הזכויות שמורות ©

פתרון דרך אחת: האם צורת הכתיבה הבאה יכולה לעזור לנו? function H = hilbert(n) i = 1:n; X = repmat(i,n,1); H = 1./(X'+X-1); 1 2 3 4 5 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 + האם צורת הכתיבה הבאה יכולה לעזור לנו? איך יוצרים את המטריצות האלו? repmat(i',1,n) repmat(i,n,1) תרגול חזרה כל הזכויות שמורות ©

פתרון דרך נוספת: האם צורת הכתיבה הבאה יכולה לעזור לנו? function H = hilbert(n) i = 1:n; H = 1./(diag(i)*ones(n)+ones(n)*diag(i)-1); 1 2 3 4 5 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 + האם צורת הכתיבה הבאה יכולה לעזור לנו? איך יוצרים את המטריצות האלו? diag(i)*ones(n) ones(n)*diag(i) תרגול חזרה כל הזכויות שמורות ©