עץ פורש – הבדלי גרסאות

מתוך ויקיפדיה, האנציקלופדיה החופשית
תוכן שנמחק תוכן שנוסף
אין תקציר עריכה
אין תקציר עריכה
שורה 2: שורה 2:
ב[[תורת הגרפים]], '''עץ פורש''' של [[תורת הגרפים|גרף]] [[גרף קשיר|קשיר]] G הוא [[תת גרף]] קשיר של G, המכיל את כל צומתי G, ואין לו מעגלים. תת-גרף כזה הוא [[עץ (תורת הגרפים)|עץ]].
ב[[תורת הגרפים]], '''עץ פורש''' של [[תורת הגרפים|גרף]] [[גרף קשיר|קשיר]] G הוא [[תת גרף]] קשיר של G, המכיל את כל צומתי G, ואין לו מעגלים. תת-גרף כזה הוא [[עץ (תורת הגרפים)|עץ]].


אפשר לקבל עץ פורש על ידי הסרת קשתות מן הגרף, בזו אחר זו, בלי לפגוע בקשירות: אם הגרף כולל מעגל (כלומר, סדרה של קודקודים <math>\ v_0,v_1,\dots,v_n</math> שבה כל זוג קודקודים סמוכים, וכן הזוג <math>\ v_0,v_n</math>, מחוברים בקשת), נצטרך להסיר את אחת הקשתות של המעגל. על תהליך זה אפשר לחזור עד שבגרף אין מעגלים, והתוצאה היא עץ פורש. מכיוון שמספר הקשתות בעץ תלוי רק במספר הקודקודים שלו, לכל העצים הפורשים של אותו גרף יש אותו מספר קשתות (n-1). דרך יותר יעילה למציאת עץ פורש היא באמצעות [[אלגוריתם חיפוש לעומק]] או [[אלגוריתם חיפוש לרוחב]].
אפשר לקבל עץ פורש על ידי הסרת קשתות מן הגרף, בזו אחר זו, בלי לפגוע בקשירות: אם הגרף כולל מעגל (כלומר, סדרה של קודקודים <math>\ v_0,v_1,\dots,v_n</math> שבה כל זוג קודקודים סמוכים, וכן הזוג <math>\ v_0,v_n</math>, מחוברים בקשת), נצטרך להסיר את אחת הקשתות של המעגל. על תהליך זה אפשר לחזור עד שבגרף אין מעגלים, והתוצאה היא עץ פורש. מכיוון שמספר הקשתות בעץ תלוי רק במספר הקודקודים שלו, לכל העצים הפורשים של אותו גרף יש אותו מספר קשתות (n-1). דרך יותר יעילה למציאת עץ פורש היא באמצעות [[אלגוריתם חיפוש לעומק]] או [[אלגוריתם חיפוש לרוחב]]. אלגוריתמים אלו ירוצו ב[[סיבוכיות|זמן]] ליניארי במספר הקשתות בגרף.


==ספירת מספר העצים הפורשים==
את מספר העצים הפורשים של גרף אפשר לקבל מ[[משפט קירכהוף]]: אם A היא [[מטריצת שכנויות|מטריצת השכנויות]] של הגרף ו- D ה[[מטריצה אלכסונית|מטריצה האלכסונית]] שרכיבי האלכסון שלה הם ה[[דרגה (תורת הגרפים)|דרגות]] של הקודקודים, אז המטריצה <math>\ D-A</math> אינה [[מטריצה הפיכה|הפיכה]] (שכן שורותיה מסתכמות לאפס). עם זאת, מכפלת ה[[ערך עצמי|ערכים העצמיים]] השונים מאפס שווה למספר העצים הפורשים, כפול במספר הקודקודים (זהו מספר העצים הפורשים, כשסופרים עצים עם שורש).
את מספר העצים הפורשים של גרף אפשר לקבל מ[[משפט קירכהוף]]: אם A היא [[מטריצת שכנויות|מטריצת השכנויות]] של הגרף ו- D ה[[מטריצה אלכסונית|מטריצה האלכסונית]] שרכיבי האלכסון שלה הם ה[[דרגה (תורת הגרפים)|דרגות]] של הקודקודים, אז המטריצה <math>\ D-A</math> אינה [[מטריצה הפיכה|הפיכה]] (שכן שורותיה מסתכמות לאפס). עם זאת, מכפלת ה[[ערך עצמי|ערכים העצמיים]] השונים מאפס שווה למספר העצים הפורשים, כפול במספר הקודקודים (זהו מספר העצים הפורשים, כשסופרים עצים עם שורש).


[[תמונה:Minimum spanning tree.svg|שמאל|ממוזער|250px|עץ פורש מינימלי]]
במקרה המיוחד של הגרף השלם על n קודקודים (הגרף שכל שני קודקודים שלו מחוברים בקשת אחת), מספר העצים הפורשים הוא <math>\ n^{n-2}</math>. לתוצאה זו, הקרויה [[נוסחת קיילי]], ידועות הוכחות רבות.
במקרה המיוחד של הגרף השלם על n קודקודים (הגרף שכל שני קודקודים שלו מחוברים בקשת אחת), מספר העצים הפורשים הוא <math>\ n^{n-2}</math>. לתוצאה זו, הקרויה [[נוסחת קיילי]], ידועות הוכחות רבות.


==עץ פורש מינימלי==
כאשר בגרף הנתון יש "משקל" לכל קשת (כלומר, זהו [[גרף ממושקל]]), טבעי לחפש עץ פורש שלו משקל כולל מינימלי. עץ כזה נקרא [[עץ פורש מינימלי]], ולבעיה של מציאת עץ כזה יש השלכות מעשיות רבות. לדוגמה, כאשר רוצים לסלול רשת כבישים בין ערים כך שיהיה מסלול בין כל שתי ערים ולעשות זאת במחיר מינימלי, מחפשים את העץ הפורש המינימלי של הגרף שצמתיו הם הערים וקשתותיו הכבישים הפוטנציאליים ביניהן (המשקל הוא אורך הכביש שיהיה צורך לסלול).
{{ערך מורחב|עץ פורש מינימלי}}
[[תמונה:Minimum spanning tree.svg|שמאל|ממוזער|250px|עץ פורש מינימלי]]
כאשר בגרף הנתון יש "משקל" לכל קשת (כלומר, זהו [[גרף ממושקל]]), טבעי לחפש עץ פורש שלו משקל כולל מינימלי. עץ כזה נקרא [[עץ פורש מינימלי]]. לבעיה של מציאת עץ כזה יש השלכות מעשיות רבות. לדוגמה, כאשר רוצים לסלול רשת כבישים בין ערים כך שיהיה מסלול בין כל שתי ערים ולעשות זאת במחיר מינימלי, מחפשים את העץ הפורש המינימלי של הגרף שצמתיו הם הערים וקשתותיו הכבישים הפוטנציאליים ביניהן (המשקל הוא אורך הכבישים שיהיה צורך לסלול).


[[קטגוריה: תורת הגרפים]]
[[קטגוריה: תורת הגרפים]]

גרסה מ־14:23, 19 ביולי 2011

עץ פורש (הקשתות הכחולות) של גרף הגריד

בתורת הגרפים, עץ פורש של גרף קשיר G הוא תת גרף קשיר של G, המכיל את כל צומתי G, ואין לו מעגלים. תת-גרף כזה הוא עץ.

אפשר לקבל עץ פורש על ידי הסרת קשתות מן הגרף, בזו אחר זו, בלי לפגוע בקשירות: אם הגרף כולל מעגל (כלומר, סדרה של קודקודים שבה כל זוג קודקודים סמוכים, וכן הזוג , מחוברים בקשת), נצטרך להסיר את אחת הקשתות של המעגל. על תהליך זה אפשר לחזור עד שבגרף אין מעגלים, והתוצאה היא עץ פורש. מכיוון שמספר הקשתות בעץ תלוי רק במספר הקודקודים שלו, לכל העצים הפורשים של אותו גרף יש אותו מספר קשתות (n-1). דרך יותר יעילה למציאת עץ פורש היא באמצעות אלגוריתם חיפוש לעומק או אלגוריתם חיפוש לרוחב. אלגוריתמים אלו ירוצו בזמן ליניארי במספר הקשתות בגרף.

ספירת מספר העצים הפורשים

את מספר העצים הפורשים של גרף אפשר לקבל ממשפט קירכהוף: אם A היא מטריצת השכנויות של הגרף ו- D המטריצה האלכסונית שרכיבי האלכסון שלה הם הדרגות של הקודקודים, אז המטריצה אינה הפיכה (שכן שורותיה מסתכמות לאפס). עם זאת, מכפלת הערכים העצמיים השונים מאפס שווה למספר העצים הפורשים, כפול במספר הקודקודים (זהו מספר העצים הפורשים, כשסופרים עצים עם שורש).

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

עץ פורש מינימלי

ערך מורחב – עץ פורש מינימלי
עץ פורש מינימלי

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