אלגוריתמים - סיכום חומר

26
גגג ג גגג גגג גגגגג גגגג1 . גגגגa . גגג- גגגגג גגגגגגגגגגג, גגגגג גגגגגגגג ג"ג גגגגג- גגגגגג גADT , גגגגגג גגגגגגגגג, גגגגג גגגגגג ג גג גגגגגגגגגגb . גגגגג גגגגגג גגגגגגגגגגi . גגגגגגג גגגגג גגגג גגגגג גגגגגג גגגגג גגגגג גגגג גגג גגגגגג גגגגג.ii . גגגג גגגגג גגגגג גגגגג גגגג גגגגג גגגגג גגגג גגגגג גגג, גגגגגג גג גגגג גגגגגגג, גגגגג גגגגגגגגג,( גגגגג גגגגMerge Sort . גג גגגג) Top-Down . iii . גגגגג גגגגגגג גגג גגג גגגגגג גג גגגגגג)גגגגג( גגגגגג גגגגג גג גגגגגג גגגגג גגגגג, גגג גגגג גגגג גגג.iv . גגגגג גגגגג גגגגגגג גגגגגג גגגגגג גגגגגג, גגגגגג גג גגגגגגגג גגגגגגג גגגגגגגג גגג גגגגגג גגגגג גגגגגג גגגגגג. גג גגגגButton-Up . v . גגגגג גגגגגג גגגגגגג גגגג גגגגגגגגגגגג( גגגגג גגגג גגג גגגגגג גג גגגגגג גגגגגגגגג גגגגגג, גגג גגגג גגגגגג גג.) גגגגגג גגגגגc . גגגגגi . גגגגגג גגגגגגג1 . גגג גגג, גגגג גגג גגגגג- גגגגגגגגג גגגג גגגג( גגגגג גגגגגג.) גגגגג, גגג גגגג גג גגגגג2 . גגג גג- גג גג גגג ג- ג גגג. 3 . גגגג גגגגג- ג גג גגגגג גגגגג גגג גגגגגגגגגגגגג- גגגג. 4 . גגג גגגגגג גגגגג- גגגגגג גגגגגגג- ג. 5 . ג גגג גגגג גגג גגגגג גגגגגגג גגגג גגגגגג גגגגגג , גג גגגגגג גגגגג גגגג גגגגגגג.6 . גגגג גגגג, גג גגג גגגג גגגגג. ג גגג גגגג, גגגגג. ג גגג גגגג, 1

Upload: ridabook

Post on 29-Jul-2015

848 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: אלגוריתמים - סיכום חומר

סיכום חומר – מים רית ו אלג

מבוא.1a.-הבעיה האלגוריתמית, תיאור אלגוריתם ע"י פסאדו-קוד ושימוש ב

ADTתזכורת לסיבוכיות, ניתוח יעילות ם של אלגוריתמים ,b.שיטות לתכנון אלגוריתמים

i.פתרון בעיה בעזרת תרגומה לבעיה מוכרת אחרת– רדוקציה שכן יודעים לפתור.

ii.חלוקת הבעיה לכמה בעיות קטנות יותר מאותו– הפרש ומשול סוג, ופתרון כל אחרת מהן באותה גישה )למשל, נוסחה

.Top-Down(. זו גישת Merge Sortרקורסיבית, iii.בכל צעד מבצעים את הפעולה– השיטה החמדנית

שתיתן את השיפור )הרווח( המיידי הגדול ביותר, ללא חרטהלאחר מכן.

iv.מתחילים מפתרון הבעיות הקטנות,– תכנות דינמי שומרים את הפתרונות החלקיים ומשתמשים בהם לפתרון

.Button-Upבעיות הולכות וגדלות. זו גישת v.מתחילים ממצב התחלתי כלשהו ובכל– שיפור הדרגתי

פעם משפרים את הפתרון )בניגוד לאלגוריתם החמדני, כאןניתן להתחרט על פעולות שנעשו(.

c.גרפיםi.מושגים בסיסיים

היא קבוצת הקודקודים ו-הוא גרף, כאשר .1 קבוצת הקשתות )קשת בגרף מכוון, צלע בגרף לא

מכוון(.. קשת – ל- אם יש קשת מ-שכן של .2 הן קשתות שונות והן נקראות ו-בגרף מכוון .3

.אנטי-מקבילות. ו- מקבילותבמולטי-גרף ייתכנו קשתות .4 אין קשתות מקבילות ואין לולאות עצמיותגרף פשוטב.5

, אך ייתכנו קשתות אנטי מקבילות. קשתות. לבין בגרף פשוט, יש בין .6

קשתות., גרף צפוף קשתות. ב, גרף דלילברוב הגרפים הם משהו בין דליל לצפוף.

מס' הצלעות. מס' הקודקודים, נסמן: .7 פרמטרים2יעילות אלגוריתמי גרפים תמיד תלויה ב-

אלו.ii.דרגות קודקודים

שווה למס' הקשתותבגרף לא מכוון, דרגת קודקוד .1.שנוגעות ב-

בגרף מכוון:.2, שווה למס' הקשתות הנכנסות ל-דרגת כניסה . שווה למס' הקשתות היוצאות מ-דרגת יציאה

( אם דרגת )מקורבגרף מכוון, קודקוד הוא .3 הכניסה שלו היא אפס )כלומר, יש לו רק קשתות

יוצאות(. ( אם דרגת היציאה )בורבגרף מכוון, קודקוד הוא .4

שלו היא אפס )כלומר, יש לו רק קשתות נכנסות(.

1

Page 2: אלגוריתמים - סיכום חומר

iii.הקשר בין מס' קודקודים למס' צלעות בגרף לא מכוון, סכום הדרגות הוא פעמיים מס'.1

.הקשתות:

בגרף מכוון, סכום דרגות הכניסה שווה לסכום דרגות.2 היציאה, השווה למס' הקשתות:

.

.בגרף פשוט מכוון: .3.בגרף פשוט לא מכוון:

.בשני המקרים, iv.מסלולים בגרפים

אם כל הקודקודים לאורכו שונים זהפשוטמסלול נקרא .1מזה )כלומר, לא מבקרים בקודקוד בו כבר היינו( .

מסלול = מספר הקשתות בו. אורך.2v.מעגלים בגרפים

( הוא מסלול שבו לפחות קשת אחת, ) מעגל.1והקודקוד הראשון שווה לקודקוד האחרון.

אין חזרות על קודקודים )פרט לראשון(.מעגל פשוטב.2במעגל פשוט מספר הקודקודים = אורך המעגל..3. או למעגל לא פשוט קוראים גם סיור .4 )למשל, עץ(.אציקליגרף חסר מעגלים נקרא .5. נקרא גרף מכוון אציקלי.6

לא ייתכנו קשתות אנטי מקבילות, כי זה יוצרב-מעגל.

vi.קשירות בגרף לא מכוון אם בין כל שני קודקודים ישקשירגרף לא מכוון נקרא .1

מסלול )כלומר, ניתן להגיע מכל קודקוד לכל קודקוד(..בגרף קשיר מתקיים .2.רכיבי קשירותניתן לחלק גרף לא מכוון ל.3 בגרף קשיר יש למעשה רכיב קשירות אחד בו כל.4

הקודקודים משתתפים.vii.קשירות חזקה בגרף מכוון

אם בין כל שני קודקודים ישקשיר חזקגרף מכוון נקרא .1מסלול מכוון.

)=רק"חים(.רכיבי קשירות חזקהניתן לפרק גרף מכוון ל.2 אם משתמשים במושג "קשיר" )ולא "קשיר חזק"( בקשר.3

לגרף מכוון, הכוונה היא לקשירות של הגרף ללאהכיוונים.

viii.)גרפים מיוחדים )לא מכוונים גרף לא מכוון, קשיר וחסר מעגלים.– עץ.1 = אוסף עצים = גרף לא מכוון חסר מעגלים )קשיר יער.2

או לא(. אם הוא קשיר זה יער של עץ אחד. גרף לא מכוון שיש אפשרות לחלק את– גרף דו צדדי.3

קבוצות, כך שיש קשתות רק בין קודקודים2קודקודיו ל- בקבוצות שונות. ואין קשתות בין קודקודים באותה

קבוצה.

2

Page 3: אלגוריתמים - סיכום חומר

גרף לא מכוון שבו כל קודקוד מחובר לכל– גרף שלם.4קודקוד )מכיל את כמות הקשתות המרבית האפשרית(.

קודקודים.4 הוא גרף שלם בן

ix.ייצוג גרפים במחשב(מטריצת שכנויות / סמיכויות ).1

a. מחזיקים מטריצה בגודל. מחוברים באמצעות וקודקוד אם קודקוד

. אם לא, מסמנים בתא 1קשת, מסמנים 0.

b.:בגרף לא מכוון, נקבל מטריצה סימטרית .

c.( השיטה הפחות שכיחה, יעילה לגרף צפוף.)

d. זיכרון– .(רשימת שכנויות / סמיכויות ).2

a. שכל תא בו הואמחזיקים מערך בגודל , רשימה מקושרת של השכנים של קודקוד זה.

b.יותר חסכוני במקום, כי מייצגים רק את הקשתות הקיימות )בניגוד למטריצה שגודלה קבוע

ומייצגת גם קשתות שלא קיימות ע"י תאים(0המכילים

c.( יותר יעילה בדר"כ, יעילה לגרף דליל.)d. זיכרון– .

בכל האלגוריתמים להלן, אם לא מצוין אחרת,.3משתמשים ברשימת שכנויות.

גרפים ללא משקלים.2a.מיון טופולוגי

i.:גרף מכוון אציקלי פשוט קלט )אם הגרף אינו אציקלי, אין פתרון לבעיה(.

ii.:יש למצוא סידור ליניארי של כל קודקודי הגרף, כך שאם הבעיה בגרף. יופיע לפני , אז ל-קיימת קשת מ-

מקביל לרשימת משימות שצריכות להתבצע, כאשר חלק מהן חייבות להתבצע לפני אחרות, אבל בסופו של דבר כולן צריכות

להתבצע.iii.:כל עוד יש קודקודים בגרף, נמצא מקור רעיון הפתרון

)=קודקוד שאף קשת לא נכנסת אליו, כלומר בעל דרגת כניסה (, נדפיס אותו, ואז נוריד אותו ואת קשתותיו מהגרף )ואז נקטין0

את דרגת הכניסה של כל שכניו(. אם בסיום עדיין קיימיםמקורות בגרף, אזי יש מעגל.

iv.:יעילות .v.:נשים לב

בפתרון זה השתמשו בתור לאחסון כל המקורות, אך.1 בהחלט ניתן להשתמש במחסנית או בכל מבנה אחר

שלא עולה יותר מדי, כי סדר הקודקודים בתור אינוחשוב.

המספר המקסימלי של קודקודים שיכולים להיות בתור.2 )כשאין כלל קשתות בגרף(,בבת אחת הוא בגרף רגיל

3

Page 4: אלגוריתמים - סיכום חומר

כל– )כאשר יש צורת כוכב בגרף ובגרף קשיר הקודקודים מחוברים רק לקודקוד אחד מסוים(.

b.מעגל )מסלול( אוילרi.:מעגל )מסלול( אוילר הוא מעגל )מסלול( שמבקר בכל הבעיה

קשת בדיוק פעם אחת )אולם יכול לבקר בקודקוד יותר מפעםאחת(.

ii.:גרף קשיר )מכוון או לא( שכל הדרגות בו זוגיות )עבור קלט קודקודים עם דרגה אי זוגית )עבור מסלול(.2מעגל(, או יש בו

iii. גרף קשירנשים לב: עבור מעגל אוילר אם ורק אם כל לא מכוון, יש ב- אם.1

הדרגות זוגיות. מעגל אם ורק אם לכל קודקוד מכוון, יש ב-אם .2

מתקיים שדרגת הכניסה שלו שווה לדרגת היציאה שלו.iv.:נשתמש בשגרת עזר רעיון הפתרון למציאת מעגל

)לאו דווקא פשוט( שמתחיל אשר מוצאת מעגל ומסתיים בקודקוד נתון )ע"י שימוש בכל פעם בקשת שעוד לא

עברו בה עבור הקודקוד בו נמצאים, עד שנגמרות הקשתותשלא עברו בהן(.

כעת, האלגוריתם שלנו יתחיל בקודקוד כלשהו, ויריץ את , קודקוד עבורו. כל עוד יש במעגל שהתקבל

עבור קודקוד עם צלע שלא עברו בה, נקרא ל- במקום שהתקבל לתוך המעגל ונדביק את המעגל

.הקודקוד יתקבל מעגל אוילר.לבסוף, ב-

v. :יעילות ,הוא )זמן ריצה כולל ב-

(. הוא זמן ריצה כולל מחוץ ל-vi. יש מסלול אוילר אם ורקנשים לב: בגרף לא מכוון ,

קודקודים בעלי דרגה אי זוגית.2 או 0אם הוא קשיר ויש בו קודקודים אי זוגיים, מדובר במסלול שהוא מעגל,.0)אם יש קודקודים אי זוגיים, אלו קודקוד ההתחלה וקודקוד2אם יש הסיום(

vii.נוסיף קודקוד חדש רדוקציה לפתרון, למציאת מסלול : הקודקודים היחידים בעלי הדרגות האי2שיש קשתות בינו לבין

זוגיות. כך נקבל מעגל שבו כל הדרגות זוגיות ונוכל להריץ את האלגוריתם שלעיל למציאת מעגל אוילר. נשמיט מהמעגל את

הקודקוד ואת הקשתות שהוספנו ונקבל את מסלול אוילרהמבוקש, באותה יעילות ריצה.

c.מעגל המילטוןi.:מעגל )מסלול( המילטון הוא מעגל )מסלול( שמבקר הבעיה

בכל קודקוד בגרף פעם אחת בדיוק.

4

Page 5: אלגוריתמים - סיכום חומר

ii.קל לגלות האם מעגל הוא המילטוני, אבל קשה למצוא מעגל לעבור–כזה )בעיה לא פתירה, אלא רק בפתרון אקספוננציאלי

על כל המעגלים )המסלולים( האפשריים בין הקודקודים בעלות.)

iii.:בגרף קיים מעגל המילטון אם הוא מכיל רעיון לפתרון מיון טופולוגי יחיד, כאשר בכל רגע נתון יש רק מקור אחד )רק

קודקוד אחד בתור בכל פעם(.iv.:ליניארית, כשל מיון טופולוגי יעילות – .

d.( חיפוש עומקDFS)i..)קלט: גרף כלשהו )מכוון או לא, קשיר או לא, אציקלי או לאii.רעיון בסיסי: סריקה רקורסיבית מכל קודקוד בגרף שטרם

ביקרנו בו.iii.:סימני צבעים

קודקוד שעוד לא ביקרנו בו.– לבן.1 קודקוד שביקרנו בו, אך לא ביקרנו בכל שכניו.– אפור.2 קודקוד שסיימנו לטפל בו )ביקרנו בו ובכל– שחור.3

שכניו(.iv.אלגוריתם: נאתחל את כל הקודקודים כלבנים )=לא

ביקרו בהם(, ואז עבור כל קודקוד לבן, נצבע אותו באפור ונעבור . לאחר מעבר עלעל כל שכניו בעזרת השגרה הרקורסיבית

כל שכניו, נצבע אותו בשחור. עבור כל שכן שמתגלה, גם נקרא, עד שנבקר בכל השכנים, שכני השכנים וכו'.לשגרה

v. :יעילות)עוברים פעם אחת על כל אחת מרשימות השכנים(

vi.:נשים לב , כאשר קשתDFSהאלגוריתם מחלק את הגרף לעצי .1

. גילה את מסמנת ש- על כל קשת עוברים בדיוק פעם אחת בגרף מכוון או.2

בדיוק פעמיים בגרף לא מכוון. בכל קודקוד ניתן לעבורמס' פעמים.

לא תמיד יצאו אותם עצים באלגוריתם או אותה כמות.3עצים, זה תלוי בסדר המעבר על הקודקודים.

אחד, בצורותDFSבגרף לא מכוון קשיר, נקבל עץ .4שונות.

vii. על אלגוריתם( טענות שהוכחוDFS:)ולא על הגרף , שמתגלה, כל קודקוד עבור קודקוד – עקרון הקינון.1

.DFS בעץ ה-, הוא צאצא של לסיום בין גילוי . כזה גם יסתיים לפני קודקוד

, לעולם לא תהיה קשת מקודקודDFSבמהלך ריצת .2שחור לקודקוד לבן.

אם במסלול – עקרון המסלול הלבן.3 כל שאר הוא הראשון שהתגלה והקודקוד הראשון

, אזי מדובר במסלול לבן,הקודקודים במסלול הם לבנים בעץ ה-וכל הקודקודים במסלול זה יהיו צאצאים של

DFS.סדר גילוי שאר הקודקודים במסלול אינו חשוב.

viii. סיווג קשתות–: דרך הקשת ומגיעים לקודקוד נניח שאנו בקודקוד

5

Page 6: אלגוריתמים - סיכום חומר

ולכן גילה ראשון את לבן. כאשר – קשת עץ.1 בעץ.יהיה אביו של

הוא אב קדמון של אפור. כאשר – קשת חוזרת.2בעץ.

בעץ. צאצא של שחור ו- כאשר – קשת קדמית.3 בעץ אינו צאצא של שחור ו- כאשר – קשת חוצה.4

)הקשת החוצה יכולה להיות באותו עץ או בין עצים(.בגרף לא מכוון, יש רק קשתות עץ וקשתות חוזרות..5

ix.רשימת הקודקודים בסדר שבו הם רשימת גילוי : מתגלים.

: רושמים קודקוד כאשר הטיפול בו מסתיים.רשימת סיוםx.-שימושים בDFS:

)בדיקה האם הגרף אציקלי(מעגל בגרף מכווןמציאת .1a. אלגוריתם: נבצעDFSאם מתגלה קשת חוזרת ,

)=שכן אפור(, נעצור ונכריז שיש מעגל. אחרת,הגרף אציקלי.

b. :כמו יעילות ,DFS.רגיל

מיון טופולוגי בגרף מכווןמציאת .2a. אלגוריתם: נבצעDFS.תוך בניית רשימת סיום

רשימת הסיום בסדר הפוך היא המיון הטופולוגי )נשמור רשימת סיום לתוך מחסנית לשם

הנוחות(. אם במהלך הריצה מצאנו קשת חוזרת )=שכן

אפור(, נכריז שיש מעגל ולכן אין מיון טופולוגי.b. :כמו יעילות ,DFS.רגיל

רכיבי קשירות בגרף לא מכווןמציאת .3a. אלגוריתם: נבצעDFSלכל קודקוד נשמור את ,

הוא רכיב קשירות.DFSשורש העץ שלו. כל עץ b. :כמו יעילות ,DFS.רגיל c.תמיד נקבל את אותו מספר עצים, אבל עצים

שונים. בדיקת קשירות של גרף לא מכוון.4

a. עבוראלגוריתם: נריץ את שגרת העזר קודקוד התחלה כלשהו ונבדוק אם הגענו לכל

הקודקודים.b. :יעילות.

בדיקת קשירות חזקה של גרף מכוון.5a. עבוראלגוריתם: נריץ את שגרת העזר

. אם לא על הגרף קודקוד התחלה כלשהו הגענו לכל הקודקודים, אין קשירות חזקה בגרף.

אם כן הגענו לכולם, נריץ את שגרת העזר )=הגרף על הגרף אותו קודקודעבור

ע"י היפוך כל הקשתות(. רק אםהמתקבל מ-הגענו לכל הקודקודים, יש קשירות חזקה בגרף.

6

Page 7: אלגוריתמים - סיכום חומר

b. :יעילות עולה, כל הרצת עולה )יצירת

(. פעמים 3, סה"כ c. להיות שורש של עץDFS אחד ויחיד בגרף

לכל הקודקודים.אומר שממנו ניתן להגיע ב- אחד ויחיד בגרף DFSלהיות שורש של עץ

מכל הקודקודים.אומר שניתן להגיע אליו ב-d. נבחר, כי ברגע שניתןלא חשוב איזה קודקוד

להגיע ממנו לכולם ומכולם אליו, ניתן להשתמשבו כדי לקשר בין כל זוג קודקודים בגרף.

e. גרף קשיר חזק. גרף קשיר חזק, גם אם ז'ּו(רכיבי קשירות חזקהמציאת .6 Iר Iיר-קֹוס Kר Iאלגוריתם ש(

a. אלגוריתם: נבצעDFS תוך בניית על הגרף , , על DFS ונבצע רשימת סיום. נבנה את

בתורתוך שימוש ברשימת הסיום בסדר הפוך רשימת הקודקודים בלולאה הראשית )בניגוד

לפעם הראשונה, בה הסדר היה שרירותי(. שהתקבל הוא רכיב קשירות חזקה.DFSכל עץ

b. :יעילות.c.-תמיד וב-נשים לב: רכיבי הקשירות ב

זהים.

גרף עלמציאת .7a..קלט: גרף פשוט מכווןb.הוא גרף רכיבי הקשירות של גרף העל

: גרף מכוון שקודקודיו הם רכיביהחזקה של וקשתותיו מייצגותGהקשירות החזקה של

לרכיבAנגישות בין הרכיבים )נסמן קשת מרכיב B-מקודקוד ב-, אם יש קשת כלשהי ב A

(.Bלקודקוד ב-c..גרף העל הוא אציקליd.אלגוריתם )שלי(: נשתמש באלגוריתם למציאת

רכיבי קשירות חזקה שלעיל, אבל במהלך סריקת נשמור בצד את רשימת כל הקשתות

החוצות. קשתות אלו הן הקשתות המחברות בין רכיבי הקשירות החזקה. לאחר יצירת קודקוד בגרף העל עבור כל רק"ח שמצאנו, נעבור על

הקשתות החוצות ונוסיפן כקשתות בין רק"חים בגרף העל )כמובן, יש לוודא שלא מוסיפים יותר

מקשת אחת לכל כיוון בין אותם רק"חים(. נקבל גרף על פשוט, ללא לולאות או קשתות כפולות, מאחר ואם יש כאלו הן ייבלעו בתוך

רק"ח או יתמזגו לקשת אחת בין רק"חים.e. :יעילות

פעולות של סריקת)כי לכל היותר הוספתי

7

Page 8: אלגוריתמים - סיכום חומר

הקשתות החוצות, במקרה הגרוע שכל קודקודלבדו הוא רק"ח(.

גשריםמציאת .8a..קלט: גרף לא מכוון קשירb.הוא צלע שהסרתה מנתקת את הגרףגשר

)הופכת אותו ללא קשיר(.c. אלגוריתם: נבצעDFSעל הגרף הלא מכוון, תוך

יצירת רשימת סיום, ונוסיף כיוונים לצלעות לפי , גילה את כיוון המעבר הראשון בהן )אם

(. ל-נכוון את הקשת מ- גשר יהיה צלע שמחברת בין רק"חים בגרף המכוון שהתקבל )לפי האלגוריתם למציאת

רכיבי קשירות חזקה, שכל מה שנותר לנו לעשות לפי רשימת הסיום על DFSבו הוא הרצת ה-

ההפוכה(.d. :יעילות.e.נשים לב: צלע אינה גשר אם ורק אם היא על

מעגל.f. גרף לא מכוון קשיר: על שקולותטענות

i.-אין גשרים.ב ii.-נמצאת על מעגל.כל צלע ב iii. כךניתן לכוון את צלעות

שיתקבל גרף קשיר חזק.iv. ע"י כיוון DFSיוצר גרף קשיר

חזק.e.( חיפוש רוחבBFS)

i. וקודקוד התחלה קלט: גרף כלשהו .ii..רעיון בסיסי: ביקור בגרף לפי רמותiii.-לשארהמטרה: מסלולים קצרים ביותר בקשתות מ

הקודקודים.)מק"ב = מסלול קצר ביותר(

iv. פונקציית המרחק: , כלומר אורכו של מקודקוד הוא המרחק של קודקוד

)=כמות הקשתות במסלול(. ל- מ-הקצר ביותרהמסלול ., אזי ל-אם לא ניתן להגיע מ-

v. תכונות: מתקייםאי שוויון המשולש: עבור קשת .1

הוא קודקוד המוצא(. )כאשר , שאינו משתמש)כי ייתכן שיש מסלול קצר יותר אל

(במסלול הקצר ביותר אל הקודקוד הלפני אחרון על מסלול קצר ויהי יהי .2

., אזי ל-ביותר מ- )כלומר, כל תת מסלול בתוך המסלול הקצר ביותר הוא

בהכרח תת המסלול הקצר ביותר(vi. ב-אלגוריתם: נאתחל את מערך המרחקים ,

. בלולאה, עבור כל קודקוד . נכניס לתור את מלבד אם עדיין – בתור, נשלוף אותו ועבור כל שכן שלו לתור ונאתחל)כלומר עוד לא ביקרו בו(, נכניס את

. נמשיך עד שהתור יתרוקן )כלומר, לא נותרו

8

Page 9: אלגוריתמים - סיכום חומר

שכנים כלשהם שלא טופלו(. את הקודקוד שגילה אותי )האב(.ניתן גם לשמור למערך

vii. :יעילות., ועליהם לא נעבור()כי ייתכנו קודקודים שאין גישה אליהם מ-

viii. הוא למעשה עץ המסלולים הקצרים ביותר מקודקוד שרטוט של המק"בים שנמצאו בהרצה מסוימת וניתן לבנות

.אותו ממערך כל הוא שרטוט גרף המסלולים הקצרים ביותר מקודקוד

המק"בים האפשריים שניתן לקבל בכל הרצה שהיא.ix.-שימוש בBFS – האם גרף הוא דו צדדי?

קלט: גרף קשיר לא מכוון.1נשים לב:.2

בגרף לא מכוון, הקשתות היחידות הן בין שתי רמות ( או בתוך אותה רמה )נובע מאי שוויון4, 3עוקבות )

המשולש(.אם יש קשתות רק בין רמות עוקבות, זהו גרף דו צדדי

אלו מרחקם מ-– קבוצות קודקודים 2)כי כך אכן יש אי זוגי(.זוגי ואלו שמרחקם מ-

כלשהו ונמצא עבור כל מקודקוד BFSאלגוריתם: נריץ .3 . נעבור על כל הקשתות, אם ישקודקוד את מרחקו מ-

)כלומר, יש קשת בין שמקיימת קשת קודקודים באותה רמה(, הגרף אינו דו צדדי. אחרת,2

הוא כן..יעילות: .4

למעבר על הקשתות( + BFS להרצת )x.אם גרף )לא מכוון( הוא דו צדדי, אזי כל המעגלים בו הם

באורך זוגי.גרפים עם משקלים.3

a. כעת יש משקלים )ממשיים( שונים לקשתות,1עד כה, כל קשת שקלה . ייתכנו גם משקלים שליליים.

., אזי . אם לא קיימת קשת לכל צלע משקל b..)ייתכן גם משקל לקודקודים )פחות נפוץc. ( מ-מסלול קל ביותרהוא משקל המסלול המינימלי במשקלו )

.ל-d.מציאת מסלולים קצרים ביותר

i.הוא מעגל שמשקלו הכולל הוא שלילי ובעצם מעגל שלילי מאפשר להקטין את משקל המסלול עד אינסוף. בנוכחות מעגל

שלילי, ייתכן שאין מסלול קל ביותר.ii.אבל בעיקרוןגרפים מכוונים ופשוטיםקלט: נתייחס פה רק ל ,

הטיפול הוא אותו טיפול גם לגרפים לא מכוונים )טיפול כללי יותר( וגם לגרפים לא פשוטים )תמיד נשתמש בקשת שעולה פחות מבין המקבילות, ונתעלם ממעגלים עצמיים כי הם לא

מועילים כלל(.iii.תכונות של מק"בים

כל תת מסלול של מק"ב הוא גם מק"ב..1 , אזי ל- הקודקוד הלפני אחרון על מק"ב מ-אם .2

. מתקייםאי שוויון המשולש: לכל קשת .3

.

9

Page 10: אלגוריתמים - סיכום חומר

אם אין מעגלים שליליים בגרף, קיים מסלול מינימלי.4פשוט.

iv. אורך המק"ב את נרצה למלא עבור כל קודקוד( )האב במק"ב שנתגלה(. שנתגלה עד כה( ואת ל-מ-

v. שגרת עזר: דרך אם המסלול אל – צעד שיפור מקומי עבור קשת

)כלומר,קצר יותר מהמסלול שיש לנו עד כה ל-(, נאמץ אותו. זו שגרה משפרת.

vi. שגרת אתחול: עבור כל הקודקודים ב- ואת ב-נאתחל את

., , וכן מלבד vii.:משפטי עזר

, לא ניתן להגיע למצב שבואם יש מעגל שלילי נגיש מ-.1אין מה לשפר.

יורד מונוטונית במהלך האלגוריתם.הערך של .2.בכל שלב באלגוריתם, מתקיים .3

viii.( אלגוריתם בלמן-פורדBellman-Ford) זהו אלגוריתם שאינו מניח דבר על הגרף או על.1

המשקלים.מוצא מק"בים מקודקוד מוצא יחיד לשאר הקודקודים.

רעיון לפתרון: נחלק לאיטרציות בהן נעבור על כל.2הקשתות וננסה לשפר.

איטרציות, כי בגרף פשוט ללאמספיקות לנו . לכן,מעגלים, המסלול הארוך ביותר הוא באורך

, כל הקודקודים שהמק"ב שלהםלאחר האיטרציה ה-, אכן ימצאו את המק"ב שלהם.באורך

.אלגוריתם: נאתחל בעזרת .3 איטרציות, ובכל אחת מהן נבצעכעת, נבצע

על כל קשת בגרף. בסוף, נעבור על קשתות הגרף ואם עדיין קיימת קשת משפרת )כלומר, ש-

יבצע עבורה משהו(, סימן שיש מעגל שלילי ולכן לא ניתןלמצוא מק"בים.

יעילות: .4ים(. איטרציות, בכל איטרציה )

ix.אלגוריתם המשתמש במיון טופולוגימיועד לגרף אציקלי בלבד..1

מוצא מק"בים מקודקוד מוצא יחיד לשאר הקודקודים. אלגוריתם: נמיין טופולוגית את קודקודי הגרף. נאתחל.2

ואז עבור כל קודקוד )לפי הסדרבעזרת ים לכל קשתותיו.הטופולוגי( נבצע

יעילות: .3 למעבר על למיון הטופולוגי + )

הקשתות(. הסבר: ניתן למצוא מק"ב לקודקוד רק לאחר שמוצאים.4

ים לפי סדראת המק"ב לאביו. מכיוון שמבצעים ים הדרושים לאביוטופולוגי, אכן נבצע את כל הים של הבן.למציאת מק"ב לפני ביצוע ה

x.( אלגוריתם דייקסטרהDujkstra)

10

Page 11: אלגוריתמים - סיכום חומר

מיועד לגרף עם משקלים אי-שליליים בלבד..1מוצא מק"בים מקודקוד מוצא יחיד לשאר הקודקודים.

הרעיון: מכיוון שמשקלי הקשתות אי שליליים, סדר.2.הקודקודים במסלול הוא סדר עולה של מרחקם מ-

. משים את כלאלגוריתם: נאתחל בעזרת .3 הקודקודים בתור עדיפויות ובכל פעם נטפל בקודקוד

ים על כל נבצע – שלו הוא המינימלי שה-קשתותיו.

ברגע שהקודקוד יוצא מתור העדיפויות, זה אומרשמצאנו עבורו את המק"ב שלו.

יעילות: תלוי במבנה הנתונים בו נשתמש למימוש תור.4 , ערימת מינימוםהעדיפויות: מערך רגיל

., ערימת פיבונצ'י בכל מקרה, דייקסטרה יעל יותר מבלמן- פורד.

- שגרה המקטינה את ערכו .5 ואז מבצעת בערימת המינימום ל-של

.xi.( אלגוריתם פלויד-וורשלFloyd)

מיועד לחיפוש מק"בים בין כל הזוגות בגרף..1 זהו אלגוריתם שאינו מניח דבר על הגרף או על

המשקלים. שעובר רק דרך ל-הוא משקל המק"ב מ- .2

, וכמובן דרך קודקודיקודקודים מהקבוצה הקצה.

.בסופו של דבר, אנו רוצים למצוא את .3 מתקיים.4

, , ואז זה זההכלומר או שבחרתי לא לעבור בקודקוד

, אולמקרה בו אסור לי לעבור דרכו: , ואז זה סכום המק"ביםשבחרתי לעבור דרך קודקוד

: ל- ומ- ל-עד כה מ-.

אם קיימת וכן אתחול: .5 אם לא קיימת קשת כזו. ו-קשת

אחת על – לולאות מקוננות 3אלגוריתם: נרוץ ב-.6 עבור כל זוג2)הקודקודים שדרכם מותר לעבור( ועוד

)מוצא ויעד(. אם קיים מסלול שליליקודקודים מקודקוד לעצמו, עוצרים ומכריזים על מעגל שלילי. בכל

אכן ישפר אתשלב, בודקים האם מעבר בקודקוד ואת, ואם כן מתקנים את ל-המק"ב מ-

לפיו.., זיכרון: יעילות: .7

xii. :לסיכום מק"בים בין כל זוגות מק"ב מקודקוד מוצאבכל המקרים:

11

Page 12: אלגוריתמים - סיכום חומר

הקודקודיםיחיד לשאר הקודקודיםגרף מכוון פשוטפלויד-וורשלבלמן-פורדללא מגבלות

משקלים אישליליים

פעמיםnדייקסטרה דייקסטרה

מיון טופולוגי מיון טופולוגיגרף אציקליפעמים

xiii.אלגוריתם וורשל(סגור טרנזיטיבי( המכיל הוא גרף הסגור הטרנזיטיבי של גרף .1

ל- אם בגרף המקורי קיים מסלול כלשהו מ-קשת .

נריץאלגוריתם לבניית סגור טרנזיטיבי: מכל קודקוד .2BFS או( DFS בגרף .) עבור נחבר קשת

סופי.BFS שקיבל ערך כל .יעילות: .3

e.מציאת עץ פורש מינימליi..קלט: גרף לא מכווןii.כל קודקודי שכולל את קשיר אציקלי הוא תת גרף עץ פורש

.הגרףiii. שכולל את כל תת-גרף של טענות שקולות עבור

קודקודיו:עץ פורש )=קשיר ואציקלי(. .1קשיר, וכל צלע בו היא גשר. .2חסר מעגלים, אך כל צלע שנוסיף לו תסגור מעגל. .3(. קודקודים ב- צלעות )יש קשיר ומכיל בדיוק .4 צלעות.חסר מעגלים ומכיל בדיוק .5

צלעות יש מעגל,)כי אם יש יותר מ- צלעות הגרף לא קשיר(ואם יש פחות מ-

iv.-ומסירים אחת מהצלעות במעגלאם מוסיפים צלע ל , שנוצר, מתקבל שוב עץ פורש.

v. הוא סכום משקלי הקשתותמשקלו של עץ פורש

המרכיבות אותו:

vi. אם משקלו מינימלי מבין כלעץ פורש מינימליהוא . )עפ"ם = עץ פורש מינימלי(העצים הפורשים של

vii.( מס' העצים הפורשים בגרף נתון הוא אקספוננציאלי.)

viii.ייתכנו כמה עצים פורשים מינימליים לאותו גרף )באותו משקל(.

כמו כן, כל העפ"מים האפשריים מכילים את אותה סדרתמשקלים של צלעות )אבל לא בהכרח את אותה סדרת צלעות(.

ix.הבעיה: יש למצוא אוסף קשתות המרכיבות עץ פורש מינימלי.

x.מת הבחירה החמדנית Wל :גרף לא מכוון קשיר עם משקלים. .1

אם ניתןמבטיחה נקראת קבוצת קשתות להשלימה לעץ פורש מינימלי ע"י הוספה בלבד של

קשתות )= קבוצת קשתות היא מבטיחה אם היא מוכלת

12

Page 13: אלגוריתמים - סיכום חומר

בעפ"ם כלשהו(..אינו בהכרח קשיר אשר משרה תת גרף

מה: תהי .2 Wקבוצת קודקודים קבוצה מבטיחה, ל צלע מינימלית במשקלה ו-המהווה רכיב קשירות ב-

היא קבוצה מבטיחה,. אזי גם ל-בין )כלומר, אם נוסיף צלע מינימלית לקבוצה מבטיחה, היא

תישאר מבטיחה(.xi.( אלגוריתם קרוסקלKruskal)

רעיון לפתרון: מתחילים מיער של עצים ובכל פעם.1מאחדים זוג קשתות, עד שנותר רק עץ בודד.

אלגוריתם: ממיינים את הקשתות לפי משקלן בסדר.2עולה.

(, כשבהתחלהנחזיק אוסף קבוצות זרות ) אוסף קשתותכל קודקוד יהיה קבוצה, וכן נחזיק את

העפ"ם המיועד.:מתחילים מהקשת הקלה ביותר, ועבור כל קשת

אינם נמצאים כרגע ו-אם היא אינה סוגרת מעגל )= שייכים לקבוצות שונות(, נוסיף אותה ו-באותו עץ =

. ו- וכן נאחד את הקבוצות של ליער בסופו של דבר, נקבל קבוצה אחת של כל הקודקודים,

קשתות העפ"ם. תתקבל קבוצת וב-.יעילות: .3

פעולות –, בניית היער )מיון עולה – פעולות , פעולות ,

(עולה )במימוש של עצים( באופן מעשי נשים לב: אלגוריתם קרוסקל יכול למצוא כל עפ"ם.4

הדבר תלוי בסדר מיון הקשתות–אפשרי עבור גרף נתון שבעלות אותו המשקל )לכן, כדי להשפיע על הקשתות שיופיע בעפ"ם, יש לשלוט בסדר הקשתות בעלות אותו המשקל(. אבל, אם כל המשקלים בגרף שונים זה מזה,

תמיד נקבל את אותו עפ"ם.xii.( אלגוריתם פריםPrim)

רעיון לפתרון: בונים עץ אחד )החל מקודקוד מוצא.1 שרירותי( ובכל שלב מוסיפים לו קודקוד שעלות חיבורו

לעץ היא מינימלית )=הקשת המינימלית(. אלגוריתם: לכל קודקוד שאינו בעץ נשמור את הצלע.2

הקלה ביותר המחברת אותו לעץ, וכן נחזיק תורקדימויות שמאפשר לשלוף את המינימלית מביניהן.

כעת, פשוט נרוץ כל עוד תור הקדימויות אינו ריק, ועבור שעלות חיבורו לעץ מינימלית, נוסיפוהקודקוד הנוכחי

בתור הקדימויות )אם אכן של לעץ ונעדכן כל שכן (.הקשת המינימלית הנוכחית שלו גדולה מהקשת

כאשר תור הקדימויות יהיה ריק, זה אומר שכלהקודקודים בעץ, וקיבלנו את העפ"ם.

, אבל טיפה יותר יעיליעילות: גם .3מקרוסקל.

xiii.:מת הפונקציה המונוטונית Wל אם נפעיל על משקלי הקשתות בגרף פונקציה מונוטונית עולה

ממש )כלומר נגדיל את משקלי כל הקשתות עפ"י אותה

13

Page 14: אלגוריתמים - סיכום חומר

פונקציה(, נקבל את אותו עפ"ם )כי סדר המשקלים באלגוריתםקרוסקל יישאר אותו הדבר(.

זרימה ברשתות.4a.הגדרות

i.היא גרף מכוון )לאו דווקא אציקלי( עם קודקודים רשת זרימה הנקראים מקור )=היחיד שמייצר חומר( ובור ו-מיוחדים

ולא עוצר ל-)=היעד, היחיד שמקבל חומר(. החומר עובר מ-בדרך או מיוצר עוד בדרך.

ii.מטריצת שכנויותנשים לב: פה הגרף נשמר ב.iii. הקיבול שהוא יש ערך לכל קשת(

( של הקשת. הקיבול מתאר את קצב הזרימה האפשריבקשת.

., קיבולה הוא אם לא קיימת קשת iv. הוא קיבול, כאשר נסמן על כל קשת

., בפועל בקשת: הזרימה הקשת ו-v. 3 אם מתקיימות פונקציית זרימהפונקציה נקראת

הדרישות הבאות: לכל : אילוץ הקיבול.1

)=הזרימה בכל קשת אינה עולה על קיבול הקשת(. לכל : אנטי סימטריה.2

)=הזרימה בכיוון ההפוך לכל קשת היא שלילית(. מתקיים: לכל שימור הזרימה.3

או )=סכום הזרימה לתוך ומתוך כל קודקוד שאינו היא אפס, כלומר דבר אינו מיוצר בדרך ודבר אינו נותר

בדרך(.vi. אם קשת רוויה היא קשת .vii.סך כל = סך כל הזרימה שיוצאת מ- ערך הזרימה =

.: הזרימה שנכנסת ל-

viii. קבוצות.תהיינה

)כלומר, כל היא ל-הזרימה מ-

(. וכן מתקיים: לבין קודקוד מ-זרימה על חץ בין קודקוד מ-1..2.. , אז מתקייםחוק הפילוג: אם .3

וכן מתקיים.

ix.-הוא ל- הקיבול מ .

. תכונות כמו ל-אין ל-x.מושג החתך

קבוצות קודקודים2 ל- הוא חלוקת של חתך.1.,, כאשר ו-זרות,

, חתכים אפשריים )כי חובה שיתקיים יש .2(. או אפשרויות: 2, ולגבי שאר הקודקודים יש

14

Page 15: אלגוריתמים - סיכום חומר

הוא סכום הקיבולים החוצים את החתך: קיבול חתך.3

.

היא סכום הזרימות החוצות את החתך: זרימה בחתך.4

.

.נשים לב: תמיד מתקיים .5 שהן חיוביות. ל-בקיבול סופרים רק את הקשתות מ-.6

. ל-בזרימה סופרים גם את הקשתות השליליות מ-מת החתך:.7 Wל

)כלומר, חתך, אז זרימה ויהי תהי עבור כל חתך בגרף, הזרימה בחתך תמיד תצא אותו

(. שווה לזרימה שיוצאת מ-–הדבר כלומר, הקיבול המינימלי בין כל – .8

קיבולי החתכים מגביל את הזרימה המקסימלית )כיהזרימה שווה בין כל החתכים(.

חתך שקיבולו שווה לזרימה המקסימלית– חתך רווי.9בגרף.

b.( אלגוריתם פורד פלקרסוןFord-Fulkerson)i.קלט: רשת זרימה )כלומר, גרף מכוון( עם קיבולים )שלמים או

. ו-רציונליים, לא אי רציונליים!(, קודקודים ii. מקסימלי. שערכה פלט: זרימה iii. כל עוד יש מסלול משפר רעיון לפתרון: נאתחל .,

.נגדיל את הזרימה לאורך iv.:מושגי יסוד

קשת שניתן להזרים לאורכה עוד זרימה– קשת משפרת.1)הזרימה בה קטנה ממש מהקיבול(.

שמורכב כולו מקשתות ל- מסלול מ-– מסלול משפר.2משפרות.

כמות הזרימה שעדיין אפשר להזרים– קיבול שיורי.3.לאורך קשת:

., ייתכן תמיד מתקיים הקיבול השיורי המינימלי–הקיבול השיורי של מסלול .4

.: לאורך

מכיל את כל הקשתות המשפרות הגרף השיורי.5 ב- ל-)=שקיבולן השיורי חיובי(, ולכן כל מסלול מ-

הוא מסלול משפר.v.:אלגוריתם

בכל הקשתות, והגרף השיורי שווה0בהתחלה הזרימה היא ., לגרף המקורי:

)=יש מסלול משפר(: ל- מ-כעת, כל עוד קיים מסלול ב- ( ונחשב את קיבולוBFS או DFS )בעזרת נמצא מסלול כזה

.השיורי

)עבור כל קשת לאורך את הזרימה ב-נגדיל ב-,, נבצע במסלול

15

Page 16: אלגוריתמים - סיכום חומר

) )עבור כל קשת לאורך וכן נעדכן את הגרף השיורי

, ובכיוון ההפוך, נעדכן במסלול (.נעדכן

מקסימלית.בסופו של דבר, תתקבל זרימה vi. האלגוריתם יסתיים תמיד, אם הקיבולים–נשים לב

שלמים.אם הם אי רציונליים, זו בעיה, כי תמיד יהיה מה לשפר עוד ועוד.

vii. .הוא קיבול הקשת בעלת הקיבול הכי גדול ברשתviii. .הוא ערך הזרימה המקסימלית

אם מעוניינים לחשבו מבלי למצוא ממש את הזרימההמקסימלית:

)במקרה הגרוע, שכלחסם אפשרי הוא .1(. הן בקיבול הקשתות שיוצאות מ-

זהו חסם טוב במקרה של קיבולים קטנים. במקרים שלקיבולים גדולים ברשת קטנה הוא לא מועיל.

חסם אפשרי אחר הוא סכום קיבולי הקשתות שיוצאות.2.מ-

ix.-יש מס' אפשרויות לבחירת המסלול המשפר ב: הכי יעיל.– BFSבעזרת .1 המסלול בעל הקיבול המקסימלי.–בשיטה החמדנית .2 המסלול הקצר ביותר )הכי פחות יעיל(.– DFSבעזרת .3

x.חישוב חסם עליון למס' האיטרציות )לשם חישוב היעילות(:

]יש לבחור את החסם ההדוק יותר מבין מה שמתאים[ (: אםEdmonds-Karpמשפט אדמונדס-קארפ ).1

למציאת מסלול משפר, לא משנהBFSמשתמשים ב-.אם המספרים שלמים, החסם הוא

אם משתמשים במסלול משפר בעל קיבול מקסימלי,.2.והמספרים שלמים, החסם הוא

אם לא יודעים באיזו שיטה השתמשו והמספרים שלמים,.3 )ערך הזרימה המקסימלית(, כי בכלהחסם הוא

לפחות.1איטרציה הזרימה תגדל ב-[.1,2]נשים לב, זהו חסם שתקף גם במקרים

אם לא יודעים באיזו שיטה משתמשים והמספרים.4 כפול המכנה המשותף(, כירציונליים, החסם הוא )

.בכל איטרציה הזרימה תגדל לפחות ב-

xi. יעילות האלגוריתם: כל איטרציה עולה..לכן חסם עליון ליעילות הוא כמות האיטרציות *

xii. (, אז1 או 0אם כל הקיבולים הם שלמים )ובפרט 0האלגוריתם מוצא זרימה שערכיה שלמים )ובפרט כל ערכיה

(.1או c. משפטMin Cut – Max Flow

, אלו תנאים שקולים: זרימה ברשת עבור i. -זרימה מקסימלית ב.ii. אין מסלול משפר(. ל- אין מסלול מ-בגרף השיורי=( iii. חתך רווי(. שעבורו קיים חתך =(

16

Page 17: אלגוריתמים - סיכום חומר

d.זיווג מרבי בגרף דו צדדיi. ו-גרף דו צדדי הוא גרף לא מכוון שבו שתי קבוצות קודקודים

הקבוצות, ולא בתוך הקבוצות.2, כאשר יש קשתות רק בין ii.של צלעות, כך שכל הוא תת-קבוצה בגרף דו צדדי זיווג

. שייך לכל היותר לצלע אחת מ-קודקוד iii.הזיווג הגדול ביותר שאפשרי ב- זיווג מרבי :.iv.לכל קודקוד יש: זיווג שבו זיווג מושלם=(

זיווג חוקי(.v. )כיקלט: גרף דו צדדי )לא מכוון(

.)vi. נוסיף קודקודיםאלגוריתם: נבנה רשת זרימה(

, לכל הקודקודים ב-. נוסיף קשתות מכוונות מ-, חדשים ל-. נכוון כל צלע מ- ל-וקשתות מכוונות מכל הקודקודים ב-

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

(. הזיווג 1 או 0פורד פלקרסון )כאשר כל הקיבולים שלמים: . וגם , אם ורק אם יהיה:

vii. :יעילות. בניית הרשת עולה זמן ליניארי. כל איטרציה של פורד-פלקרסון

לכל– קשתות קשתות )כי הוספנו , כי יש עולה איטרציות כי יש(. ויש לכל היותר או ל-קודקוד, קשת ל-

(. ו- קודקודים )כי הוספנו את viii..גודל הזיווג שווה תמיד לערך הזרימה

הזרימה המקסימלית נותנת זיווג מרבי.ix. משפטHall

. גרף לא מכוון דו צדדי, יהי .1 יש זיווג מושלם אם ורק אם לכל תת קבוצה ב-.2

.מתקיים מוגדר כך: .3

(. של הקודקודים ב-)קבוצת הקודקודים השכנים ב- ,כלומר, משפט הול אומר שעבור כל תת קבוצה .4

( קטן/שווה )ששייכים ל-יתקיים שמס' הקודקודים ב-(. )ששייכים ל-למס' השכנים של קודקודי

e. פירוק גרף למעגלים זרים–שימוש בזיווגים i.לגרף מכוון יש פירוק למעגלים זרים אם קיים אוסף של מעגלים

שכולל את כל קודקודי הגרף.זרים בקודקודיםפשוטים שייך בדיוק למעגל אחד באוסףכלומר, כל קודקוד

המעגלים.ii.נבחין: לגרף יש פירוק למעגלים אם ורק אם יש תת קבוצה

שבו של קשתות, כך שניתן לבנות גרף בדיוק.1דרגת הכניסה ודרגת היציאה של כל קודקוד היא

iii.לכן, אם ניתן למצוא זיווג מושלם כאשר בגרף דו צדדי , זה אומר שניתן לחלק את הגרף למעגלים זרים.

17

Page 18: אלגוריתמים - סיכום חומר

התאמת מחרוזות ואוטומטים סופיים.5a.אוטומטים סופיים

i.הגדרות מכונה שכוללת מס' סופי של מצבים–אוטומט סופי .1

ועוברת ממצב למצב לפי קלט חיצוני.2.

ii.זיהוי שפהiii.שפות רגולריות ולא רגולריות

b.בעיית התאמת המחרוזותi.האלגוריתם הנאיביii.אלגוריתמים להתאמת מחרוזות באמצעות אוטומט סופיiii. אלגוריתםKnuth-Morris-Pratt

18