מבני נתונים ואלגוריתמים תרגול #8-9

Σχετικά έγγραφα
logn) = nlog. log(2n

מתמטיקה בדידה תרגול מס' 13

. {e M: x e} מתקיים = 1 x X Y

חורף תש''ע פתרון בחינה סופית מועד א'

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

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

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

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

ל הזכויות שמורות לדפנה וסטרייך

אלגוריתמים בתורת הגרפים חלק ראשון

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

אלגוריתמים בתורת הגרפים חלק שני

תרגיל 13 משפטי רול ולגראנז הערות

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

Logic and Set Theory for Comp. Sci.

אלגוריתמים 1, סמסטר אביב 2017

סיכום- בעיות מינימוםמקסימום - שאלון 806

שאלה 1 V AB פתרון AB 30 R3 20 R

gcd 24,15 = 3 3 =

מבני נתונים ואלגוריתמים תרגול #11

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

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

מושגים: קשיר. o בעל 1 קשתות בדיוק.

רשימת בעיות בסיבוכיות

פרק 8: עצים. .(Tree) במשפטים הגדרה: גרף ללא מעגלים נקרא יער. דוגמה 8.1: תרגילים: הקודקודים 2 ו- 6 בדוגמה הוא ).

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

אלגוריתמים בתורת הגרפים חלק רביעי

גבול ורציפות של פונקציה סקלרית שאלות נוספות

{ : Halts on every input}

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

הגדרה: מצבים k -בני-הפרדה

מתמטיקה בדידה תרגול מס' 5

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

אלגוריתמים / תרגיל #1

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

סדרות - תרגילים הכנה לבגרות 5 יח"ל

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

תרגול מס' 6 פתרון מערכת משוואות ליניארית

גרפים אלגוריתמים בתורת הגרפים הרצאה 1 גיא פלג 15 במרץ 2012 הגדרה: מגן דוגמאות: זוגות לא סדורים כיוון שבקבוצה סדר לא חשוב.

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

מודלים חישוביים מבחן מועד א', סמסטר א' תשע''ה (2015)

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

תורת הגרפים - סימונים

co ארזים 3 במרץ 2016

תורישק :תורישקה תייעבב בוש ןייענ?t- t ל s- s מ לולסמ שי םאה 2

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

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

מיון. 1 מיון ערימה (Heapsort) חלק I 1.1 הגדרת ערימה 0.1 הגדרה של המושג מיון מסקנה: הערך הכי גבוה בערימה נמצא בשורש העץ!

תורת המספרים 1 פירוק לגורמים ראשוניים סיכום הגדרות טענות ומשפטים אביב הגדרות 1.2 טענות

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

אלגברה ליניארית (1) - תרגיל 6

תרגילים באמצעות Q. תרגיל 2 CD,BF,AE הם גבהים במשולש .ABC הקטעים. ABC D נמצאת על המעגל בין A ל- C כך ש-. AD BF ABC FME

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר

3-9 - a < x < a, a < x < a

1 סכום ישר של תת מרחבים

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

תורת הקבוצות תרגיל בית 2 פתרונות

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

תרגול פעולות מומצאות 3

x a x n D f (iii) x n a ,Cauchy

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

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

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

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

תורת הגרפים על פי הרצאות מאת פרופ' אהוד פרידגוט 11 ביולי 2010

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

אינפי - 1 תרגול בינואר 2012

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

אלגוריתמים סמסטר א' תשע"ב מרצים: פרופ' עמוס פיאט ופרופ' מיכה שריר. מתרגלים: שי ורדי ואדם שפר.

מבני נתונים מבחן מועד א' סמסטר חורף תשס"ו

תרגול מס' 1 3 בנובמבר 2012

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

אלגברה לינארית מטריצות מטריצות הפיכות

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

מבני נתונים (234218) 1

תרגיל 7 פונקציות טריגונומטריות הערות


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

שאלה 1 נתון: (AB = AC) ABC שאלה 2 ( ) נתון. באמצעות r ו-. α שאלה 3 הוכח:. AE + BE = CE שאלה 4 האלכסון (AB CD) ABCD תשובה: 14 ס"מ = CD.

אלגברה מודרנית פתרון שיעורי בית 6

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

מודלים חישוביים פתרון תרגיל 5

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

אופטימיזציה דיסקרטית 67855

מתמטיקה בדידה תרגול מס' 12

אלגברה לינארית (1) - פתרון תרגיל 11

תורת הקבוצות יובל קפלן סיכום הרצאות פרופ ארז לפיד בקורס "תורת הקבוצות" (80200) באוניברסיטה העברית,

מבנה נתונים סיכומי הרצאות

תשובות מלאות לבחינת הבגרות במתמטיקה מועד חורף תשע"א, מיום 31/1/2011 שאלון: מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן.

Transcript:

מבני נתונים ואלגוריתמים תרגול #89 מציאת מסלולים קצרים הבעיה: נתון גרף ממשוקל רוצים למצוא את המסלול הקצר בין זוג קודקודים עיקרון הרלקסציה של קשת: בדיקה האם ניתן לשפר מסלול מ s ל v ע"י מעבר דרך קודקוד u:? מציאת מסלול מקודקוד מקור יחיד לכל שאר הקודקודים: האלגוריתם של Dijkstra )משקלים חיוביים(: קלט: גרף נתון גרף מכוון/לא מכוון, פונקציית משקל על הקשתות ) וקודקוד מקור s )כלומר פלט: לכל אורך המסלול )=משקל המסלול( הקצר ביותר מ s ל v הרעיון: תחילה מגדירים את המרחק מ s לכל קודקוד להיות משקל הקשת בינו לבין s אם קיים, אחרת אינסוף, במערך D אחר כך בלולאה מחפשים את הקודקוד בגרף שהמרחק שלו מ s הוא המינימלי בודקים עבורו האם קיים מסלול קל יותר מ s אליו שעובר דרך קודקוד שאינו ב S )קודקודים שכבר מצאנו עבורם את המסלול הקצר ביותר( Dijkstra ( G, W, s): S ={s} D(s) = 0 while find so that D(v) = min(d) D(u) = min( D(u), D(v) + w(v,u)) (relaxation) סיבוכיות: O( V 2 ) ניתן לשפר עם ערימת פיבונצ'י (E O( V log V + האלגוריתם של BellmanFord )גם משקלים שליליים(:, פונקציית משקל על הקשתות קלט: גרף נתון גרף מכוון משקלים שליליים(, וקודקוד מקור s פלט: לכל אורך המסלול )=משקל המסלול( הקצר ביותר מ s ל v )כלומר ייתכנו הרעיון: לעומת דייקסטרה, האלגוריתם הזה לא חמדני עוברים על כל הקשתות 1 V פעמים, ועושים "הקלה" עבור כל קשת אם אפשר אם אחרי כל האיטרציות, עדיין ניתן לעשות רלקסציה לקת מסוימת, סימן שיש מעגל שלילי, והאלגוריתם לא יחזיר מרחקים קצרים אלא false

BellmanFord( G, W, s): d(v) = Π(v) = NULL d(s) = 0 for i=1 to V 1 if d(v) > d(u) + w(u,v) d(v) = d(u) + w(u,v) Π(v) = u // search for negative cycle if d(v) > d(u) + w(u,v) return false return true סיבוכיות: O( V * E ) מציאת מסלול מכל קודקוד לכל קודקוד: האלגוריתם של :FloydWarshall קלט: גרף נתון גרף מכוון/לא מכוון, פונקציית משקל ) )כלומר פלט: אורך המסלול הקצר ביותר מכל קודקוד לכל קודקוד על הקשתות הרעיון: האלגוריתם מתבסס על האבחנה הבאה אם ממספרים את הקודקודים,,1,2 n ומסמנים ב את משקל המסלול הקצר ביותר מ x ל y שעובר אך ורק בקודקודים מתוך הקבוצה כלומר תמיד k},{1,2,, אז מתקיים : מתקיים אחד משניים: אם המסלול הקצר ביותר מ x ל y שעובר דרך קודקודים שמספרם לכל היותר k ולא עובר ב k עצמו, אז אחרת, אם המסלול כן עובר ב k עצמו, הוא עובר בו רק פעם אחת )כי אין מעגלים שליליים בגרף( ואז אפשר לפרק את המסלול ל 2 : מסלול מ x ל k ומסלול מ k ל y מסלולים אלו לא עוברים דרך קודקודים שמספרם גדול מ k1, לכן משקל המסלול הכולל יהיה כעת נשאר לבדוק איזה מסלול קצר יותר עבור על קודקוד FloydWarshall ( G, W): for k=1 to n for i=1 to n for j=1 to n המסלול עובר ב k המסלול לא עובר ב k נמרחק המינימלי בין i ל j כאשר המסלול בין הקודקודים הממוספרים לכל היותר k סיבוכיות: ) 3 O( V

תרגיל: נתונים n סוגי מטבעות שערי החליפין בין כל זוג מטבעות נתונים במטריצה כך ש הוא שער החליפין בין מטבע i ל j )כלומר עבור מטבע אחד מסוג i ניתן לקנות מטבעות מסוג j( הציעו אלגוריתם המכריע האם קיימת סדרת החלפת מטבעות, המתחילה ומסתיימת באותו מטבע כך שבסיומה נרוויח כסף פיתרון: נמיר את הבעיה למציאת מעגל שלילי בגרף הגדרת הגרף: על n צמתים בין כל זוג צמתים תהיה קשת רוצים לקבוע משקלים כך שמעגל שלילי בגרף יהיה שקול לסדרת החלפת מטבעות מעגל שלילי אפשר להגיע מצומת לעצמו במסלול שמחירו קטן מ 0 האלגוריתם: בנה גרף G כנ"ל הרץ בלמןפורד מקודקוד מקור שרירותי אם קיים מעגל שלילי החזר אותו מכיוון שהגרף קשיר, חיפוש מעגל שלילי לא תלוי בקודקוד המקור סיבוכיות: O(n 3 ) V = n, E = n 2 הוכחת נכונות: אם הוא מעגל שלילי, אז מתקיים: > 1 כלומר ממטבע יחיד מסוג 1 נקבל יותר ממטבע מסוג 1 בסוף הסדרה, לכן אפשר להרוויח כסף ע"י המרת v 1 בסדר הבא: תרגיל: גרף נתון גרף קשיר ולא מכוון ופונקציית משקל על הקשתות הוכיחו/הפריכו את הטענות הבאות: ( a אישלילי( אם P הוא כך ש נגדיר פונקצית משקל חדשה 1( c המסלול הקצר ביותר בין זוג קודקודים לפי w, הוא גם הקצר ביותר לפי כנ"ל עם פונקציית המשקל 2( פיתרון: 1( לא נכון דוגמא נגדית:

מוסיפים a לכל הקשתות, לכן זה משנה כאשר מספר הקשתות של המסלולים השונים האפשריים משתנה 2( נכון הוכחה )בשלילה(: Q קצר לפי, אך נניח שקיים מסלול Q כך ש )c מקבלים: )כלומר w אך לא לפי בסתירה להנחה ש ופונקציית משקל על הקשתות תרגיל: גרף נתון גרף קשיר ומכוון הציעו אלגוריתם שמוצא את המסלול הקלקצר ביותר מ s לכל כלומר מבין כל המסלולים הקצרים נעדיף את אלו עם מספר הקשתות הנמוך ביותר פיתרון: נרצה לתת עדיפות למסלולים עם מספר הקשתות הנמוך ביותר: האלגוריתם: חשב את 'w הרץ את דייקסטרה מ s לפי 'w 'w המסלול קצר ביותר לפי P הוכחת נכונות: P המסלול הקלקצר ביותר אזי: ניקח 2 מסלולים פשוטים )ללא מעגלים( P,Q כך ש

* מכיוון ש P מסלול פשוט ללא חזרה על קודקודים מתקיים 1 V P כי המשקלים שלמים * כלומר אם P הוא המסלול הקלקצר לפי w הוא גם המסלול הקצר ביותר לפי 'w בנוסף נבחין כי אם אז אם"ם P < Q זרימה רשת זרימה: גרף מכוון ומכוון עם פונקציית קיבולת כך ש לכל לכל מתקיים ש מתקיים ש בנוסף יש קודקוד מקור s וקודקוד יעד t זרימה: נתונה רשת זרימה G תכונות: כנ"ל זרימה ב G היא פוקנציה ממשית המקיימת 3 אילוצי קיבולת לכל סימטריה נגדית לכל שימור הזרימה לכל מתקיים מתקיים דורשים ש )זרימה מ u ל u שווה ל 0 ( )1 )2 )3 ערך הזרימה שיוצאת מהמקור מהמקור אליהם( )הזרימה מהמקור לקודקודים שיש קשת רשת שיורית: בהינתן רשת זרימה וזרימה, הרשת השיורית מורכבת מקשתות שיכולות להכיל זרימה נוספת קיבולת שיורית של :(u,v) גרף השיורית של רשת זרימה G וזרימה f הוא גרף כאשר דוגמא:

בt גם אם היא לא קשת ב כי כאשר 0>( אז מקבלים הערה: ( u,v )יכולה להיות קשת ב לכן מסלול שיפור: בהינתן רשת זרימה G וזרימה f, מסלול שיפור הוא מסלול פשוט מ s ל לדוגמא: P )באדום( הוא מסלל שיפור עם קיבולת חתך (S,T) של רשת זרימה היא חלוקת V ל 2 קבוצות S ו T=V/S כך ש ו אם f זרימה, אז: היא הזרימה על החתך ומוגדרת להיות היא הקיבולת על החתך ומוגדרת להיות לדוגמא: הזרימה על החתך: ל T עשויה להכיל זרימות שליליות כי זה זרימה מ S f(s,t) הקיבולת של החתך: c(s,t) מכילה רק ערכים חיוביים חתך מינימלי: חתך שהקיבולת שלו היא המינימלית מבין כל החתכים משפט :MinCut MaxFlow תהי f זרימה ברשת זרימה G התנאים הבאים שקולים:

זרימה מירבית ב G f ברשת השיורית אין מסלול שיפור מ s ל t קיים חתך (S,T) כך ש f c(s,t) = )כלומר (S,T) חתך מינימלי( )1 )2 )3 ברשת זרימה מתקיים שהזרימה המקסימלית שווה לקיבולת של החתך המינימלי אלגוריתם FordFulkerson למציאת זרימה מקסימלית: FordFulkerson(G, s, t): אתחול הזרימה ל 0 = 0 f(u,v) f(v,u) = 0 G f = G while there exists a path P from s to t in G f c f (P) = min{c f (u,v) (u,v) P} (u,v) P f(u,v) = f(u,v)+c f (P) f(v,u) = f(u,v) c f (u,v) = c(u,v)f(u,v) c f (v,u) = c(v,u)f(v,u) סיבוכיות O( E *f*) חיפוש מסלול באמצעות DFS הקיבולת של P זה הקיבולת של הקשת עם הקיבולת הכי נמוכה עדכון P ב G עדכון P ב f G שיפור: האלגוריתם של :EdmondsKarp הרעיון הכללי: האלגוריתם זהה ל FF אך במציאת מסלול משפר, מחפשים את המסלול הקצר ביותר סיבוכיות: ) 2 O( V * E תרגיל: נתונה רשת זרימה G הוכח/הפרך: אם באיטרציה ה i בהרצת פורדפלקרסון הקשת e נעלמת מ G, f אזי e א תופיעה ב G f באיטרציות הבאות פיתרון: לא נכון דוגמא נגדית: ניקח את המסלול P={s,v1,v2,t} עם קיבולת 1 הקשת (v1,v2) נעלמה ובמקומה הופיעה (v2,v1) כעת ניקח מסלול שיפור P={s,v2,v1,t} )שוב עם קיבולת 1( הקשת (v1,v2) שוב מופיעה

הגדרה: רשת זרימה שלמה היא רשת שבה כל הקיבולות הן מספרים שלמים זרימה שלמה היא זרימה f בה מתקיים לכל תרגיל: הוכח/הפרך: ברשת זרימה שבה הקיבולת של כל קשת קטנה מ 7, האלגוריתם של פורדפלקרסון עושה O( E ) איטרציות; כנ"ל ברשת זרימה לא שלמה )1 )2 פיתרון: נכון הוכחה: נתון גרף כנ"ל לכל חתך (S,T) מתקיים שמשקל החתך הוא לכל היותר )1 כל איטרציה של פורדפלקרסון חייבת לשפר את הזרימה לפחות ב 1 )הרשת שלמה(,ולכן מספר השיפורים האפשריים הוא לכל היותר E 7 O( E ) 2( לא נכון דוגמא נגדית: נשפר את הזרימה לסירוגין על המסלולים: {s,v1,v2,t} {s,v2,v1,t} האלגוריתם יסתיים אחרי E 2 2 איטרציות כי הזרימה משופרת בכל איטרציה ב המקסימלית היא 2 והזרימה תרגיל: וקבוצת יעדים נתונה רשת זרימה (V,E,c) G = קבוצת מקורות כיצה ניתן למצוא זרימה מקסימלית כאשר מותר להזרים מכל מקור לכל יעד? פורמלית, הזרימה צריכה לקיים: לכל u למעט

פיתרון: ניצור רשת חדשה G 0 ע"י הוספת: מקור "על" הזרימה( יעד "על" s 0 עם קשת (s, s) 0 לכל שהקיבולת שלהן היא )כלומר אין מגבלה על t 0 עם קשת (t, t) 0 לכל שהקיבולת שלהן היא נמצא זרימה מקסימלית ב G 0 מ s 0 ל t 0 נסיר את ונקבל את הזרימה המקסימלית ב G t 0 ו s 0 רכיבים קשירים היטב Strongly connected components בגרף לא מכוון נתון גרף מכוון נגדיר יחס R על V המסמל "קשירות חזקה" באופן הבא: אם קיים מסלול מ x ל y ומ y ל x ב G מכיוון שהיחס רפלקסיבי, סימטרי וטרנזיטיבי, הוא יחס שקילות, המחלק את V למחלקות שקילות כל שכל מחלקה היא "רכיב קשיר היטב" דוגמא: אלגוריתם Tarjan למציאת רכיבים קשירים היטב: N מונה לסריקה סגרף S מחסנית עץ פורש שנבנה בזמן ה DFS T dfsnum מערך שמחזיק את המספר הסידורי בזמן הסריקה low מערך שמחזיק את ערך ה dfsnum הנמוך ביותר אליו מצביע אחד מצאצאיו )צאצא של x בעץ )T Tarjan (G): create new node x, and (x,v) N=0 S empty stack T tree with x as root Visit(x)

Visit(p) Spush(p) dfsnum(p) = N low(p) = N N++ edge (p,q) if q is not in T add(p,q) to T Visit(q) low(p) = min{low(p), low(q)} else low(p) = min{low(p), dfsnum(q)} if low(p) == dfsnum(p) ( 0 doesn't print x) print("scc") do v = Spop() print(v) remove v from G while v p סיבוכיות: O( V + E ) )כמו )DFS נקודות חשובות: כמו DFS עם כמה שינויים מוסיפים קודקוד חדש וממנו קשת לכל קודקוד בגרף, ועוברים באמצעות DFS על הגרף כך מובטח שנעבור על כל הקודקודים הרכיבים הקשירים הם תתיעצים ב T על מנת לגלות אותם צריך לחתוך קשתות מסוימות ומה שנשאר הם הרכיבים נקבע ששורש של תתעץ הוא הקודקוד העליון ביותר )צריך לקבוע אם V מסוים הוא שורש כזה(