תורת הגרפים תוכן עניינים מושגים יסודיים בתורת הגרפים | שימושים של גרפים | משפחות גרפים | הכללות של גרף | ייצוג גרפים | רקע היסטורי | משפטים חשובים בתורת הגרפים | בעיות מרכזיות בתורת הגרפים | אלגוריתמים חשובים | קישורים חיצוניים | הערות שוליים | תפריט ניווטבמשיכת קולמוס אחתתורת הגרפים בeitan.ac.ilסיכום - תורת הגרפיםתורת הגרפיםתורת הגרפיםE53 -- Solutio problematis ad geometriam situs pertinentis
תורת הגרפים
מתמטיקהגרפיםאלגוריתמיםמדעי המחשבחברתיותחקר רשתות חברתיותקבוצהמקרה פרטיאינסופיתויקיפדיהכבישיםעירחקר רשתות חברתיותאנושיתסיבוכיותמטריצהסיביתגרף אקראירשימות מקושרותמסלוללאונרד אוילרהגשרים של קניגסברגטופולוגיותגאומטריה
תורת הגרפים
קפיצה לניווט
קפיצה לחיפוש
תורת הגרפים היא ענף של המתמטיקה העוסק בתכונותיהם של גרפים. גרפים יכולים לייצג מבנים מופשטים בתחומים רבים ומגוונים, ולכן אלגוריתמים לטיפול בגרפים הם נושא מרכזי במדעי המחשב. דוגמה לשימוש בתורת הגרפים, בתחום שאינו מתמטי לכאורה, היא ניתוח מערכות חברתיות הנעשה במסגרת חקר רשתות חברתיות. בפשטות, גרף מייצג קבוצת אובייקטים וקשרים ביניהם.
תוכן עניינים
1 מושגים יסודיים בתורת הגרפים
2 שימושים של גרפים
3 משפחות גרפים
4 הכללות של גרף
5 ייצוג גרפים
6 רקע היסטורי
7 משפטים חשובים בתורת הגרפים
8 בעיות מרכזיות בתורת הגרפים
9 אלגוריתמים חשובים
10 קישורים חיצוניים
11 הערות שוליים
מושגים יסודיים בתורת הגרפים |
ערך מורחב – גרף (תורת הגרפים)
המונח גרף (graph) יכול לתאר מספר מבנים מתמטיים דומים. בדרך כלל, ספר או מאמר העוסק בגרפים יגדיר בתחילתו באיזה מן הבאים הוא עוסק. הגדרה כללית, בלתי פורמלית ופשוטה לגרף היא אוסף של נקודות, המכונות צמתים, וקשתות המחברות ביניהם.
שתי הבחנות בולטות בתורת הגרפים הן ההבחנה בין גרף מכוון לגרף בלתי מכוון, ובין גרף סופי לגרף אינסופי.
גרף מכוון (directed graph, digraph) הוא קבוצה של צמתים (נקראים גם נקודות, קודקודים, nodes, vertices) וקבוצה של קשתות מכוונות (directed edges, arcs). כאשר ישנה משמעות לכיוונה של קשת מכוונת - היא יוצאת מצומת אחד ונכנסת לצומת אחר. באופן פורמלי, גרף מכוון Ddisplaystyle D מוגדר על ידי (V,E)displaystyle (V,E) כאשר Vdisplaystyle V היא קבוצת הצמתים ו- E⊆V×Vdisplaystyle Esubseteq Vtimes V היא קבוצת הקשתות. קשת e=(u,v)∈Edisplaystyle e=(u,v)in E יוצאת מ- udisplaystyle u ונכנסת ל- vdisplaystyle v.
גרף בלתי מכוון (undirected graph), ולעיתים בפשטות גרף הוא קבוצה של צמתים וקבוצה של קשתות (edges). כל קשת מקשרת בין שני צמתים. באופן פורמלי, גרף בלתי מכוון Gdisplaystyle G מוגדר על ידי (V,E)displaystyle (V,E) כאשר Vdisplaystyle V היא קבוצת הצמתים ו- E⊆uv∣u,v∈Vdisplaystyle Esubseteq uvmid u,vin V היא קבוצת הקשתות. ניתן לראות בגרפים בלתי מכוונים מקרה פרטי של גרפים מכוונים, בהם עבור כל זוג צמתים u ו-v, הקשתות מ-u ל-v ומ-v ל-u קיימות שתיהן, או חסרות שתיהן.
גרף סופי (finite graph) הוא גרף שקבוצת הצמתים שלו סופית. גרף אינסופי (infinite graph) הוא גרף שקבוצת הצמתים שלו היא אינסופית.
שימושים של גרפים |
ישנם מבנים מתחומים רבים שניתן לייצגם באמצעות גרף, ובעיות מעשיות שונות ניתנות לניסוח (ולפתרון) כבעיות העוסקות בגרפים. דוגמה לשימוש בגרף מכוון הוא המבנה של ויקיפדיה. ניתן לייצג את ויקיפדיה באמצעות גרף מכוון בו כל אחד מהערכים מיוצג על ידי צומת, וקישור המפנה מערך אחד לאחר מיוצג על ידי קשת שיוצאת מהצומת המייצג את הערך המפנה ונכנסת לצומת המייצג את הערך אליו מפנה ההפנייה.
דוגמה לשימוש בגרף בלתי מכוון ממושקל היא רשת כבישים. כל עיר מיוצגת על ידי צומת, כל כביש בין-עירוני על ידי קשת, ואורכו של כל כביש הוא משקל הקשת המתאימה.
חקר רשתות חברתיות, שהוזכר בפתיחה, הוא דוגמה לשימוש בגרף מעורב וממושקל.
באופן כללי, גרפים טובים לייצוג מבנה שבו קיימים מספר אובייקטים המקושרים ביניהם. הגרף מייצג את האובייקטים באמצעות הצמתים ואת הקשרים ביניהם באמצעות הקשתות. כאשר לקשרים יש כיוון או ערך, הם מיוצגים על ידי כיוון הקשת או משקלה.
משפחות גרפים |
משפחת גרפים (graph class) היא קבוצת כל הגרפים שלהם תכונה משותפת מסוימת.
דוגמאות:
גרף קשיר הוא גרף בלתי מכוון שבין כל שני צמתים בו קיים מסלול.
עץ הוא גרף קשיר ללא מעגלים.
יער הוא כל גרף ללא מעגלים. שמו בא מכך שניתן לראות כל יער כאוסף של עצים - הרכיבים הקשירים שלו.
גרף דו צדדי הוא גרף שבו ניתן לחלק את קבוצת הצמתים לשתי תת-קבוצות זרות כך שכל קשת מחברת שני צמתים משתי תתי-קבוצות שונות.- גרף שלם הוא גרף שבו כל צומת מחובר לכל שאר הצמתים.
- גרף דו צדדי שלם הוא גרף דו צדדי שבו כל צומת מחובר לכל הצמתים מתת הקבוצה האחרת.
גרף מישורי הוא גרף שניתן לצייר במישור, מבלי שהקשתות יחתכו זו את זו.
גרף רגולרי הוא גרף שבו מכל צומת יוצא אותו מספר של קשתות (אם מספר זה הוא k הגרף נקרא k-רגולרי, ו-k הוא הדרגה של כל קודקוד).
ניתן להגדיר משפחת גרפים בעבור כל תכונה, ואפילו לפי רשימה פרטנית של גרפים שבמשפחה או של גרפים שאינם במשפחה.
הכללות של גרף |
מולטיגרף (multigraph) הוא הכללה של גרף, שבה כל זוג צמתים יכולים להיות מחוברים על ידי יותר מקשת אחת.
היפרגרף (hypergraph) הוא הכללה של גרף, שבה כל קשת יכולה לחבר יותר משני צמתים (וכך ניתן לחשוב על כל קשת כעל תת-קבוצה של צמתים).
ייצוג גרפים |
לצורך ביצוע פעולות על גרפים, שהם גופים מופשטים, יש צורך להשתמש בייצוג כלשהו שלהם. נהוג להציג גרף באופן ויזואלי, כפי שהוצג בראש ערך זה, כך שכל צומת מוצג באמצעות נקודה, וכל קשת מוצגת באמצעות קו. קשת מכוונת מוצגת באמצעות ראש חץ לכיוון הצומת אליו הקשת נכנסת. ההצגה הוויזואלית היא מאוד נוחה וטבעית לעין אנושית. צורת הצגה זו אינה פורמלית ולכן קשה להגדיר אלגוריתמים שמשתמשים בה.
גרף, כפי שהוגדר לעיל, הוא קבוצה של צמתים וקבוצה של קשתות ביניהם. שתי הקבוצות הללו יחדיו מייצגות את הגרף. הייצוג הטריוויאלי הזה אינו מקובל, מכיוון שהוא אינו מקל על ביצוע פעולות על הגרף. סיבוכיות זמן הריצה ומקום האחסון של אלגוריתם הפועל על גרפים תלויה ביעילות יצוג הגרפים והפעולות עליהם. לכן, יש חשיבות לבחירת יצוג גרפים לפי אופי האלגוריתם, כלומר לפי סוג הגרפים עליהם הוא פועל ולפי הפעולות על הגרפים אותם הוא מבצע.
מטריצת סמיכויות (adjacency matrix) היא שיטת יצוג מקובלת לגרף כללי. בשיטה זו, הגרף מיוצג כמטריצה בגודל |V|×|V|displaystyle כאשר כל צומת מיוצג על ידי שורה ועל ידי עמודה. תא (i,j)displaystyle (i,j) במטריצה מכיל "1" אם ישנה בגרף קשת מהצומת של idisplaystyle i לצומת של jdisplaystyle j, ו-"0" אחרת. היתרון של מטריצת סמיכויות הוא שניתן לענות על שאלות מסוג "האם u הוא שכן של v?" בזמן קבוע. במטריצת סמיכויות, כל זוג צמתים מיוצג על ידי סיבית בודדות במטריצה, בין אם קיימת קשת ביניהם ובין אם הקשת אינה קיימת. לכן, המקום שנדרש לייצוג כזה הוא כריבוע מספר הצמתים, כלומר Θ(|V|2)^2) סיביות. גודל מקום זה הוא אופטימלי עבור גרף כללי וגרף אקראי, אבל עלול להיות גבוה עבור גרף דליל.
רשימת סמיכויות (adjacency list) גם היא שיטת יצוג מקובלת לגרף כללי. בשיטה זו, הגרף מיוצג כקבוצה של רשימות מקושרות של השכנים של כל צומת. היתרון של רשימות סמיכויות הוא תשובה בזמן קבוע על פעולות מסוג "הבא את רשימת השכנים של v", "הבא שכן כלשהו של v" ו-"הבא את השכן הבא של v". לצורך כך דרושים |V|V ראשי רשימות ו |E|displaystyle צמתים, כלומר סה"כ Θ(|V|+|E|)E מקום, פחות מזה של מטריצת סמיכויות עבור גרף שאינו צפוף.
את שתי השיטות הנ"ל ניתן להכליל גם עבור גרפים בלתי מכוונים וגרפים ממושקלים.
פרט לשתי השיטות שהוזכרו, המקובלת לגרף כללי, קיימות שיטות יצוג שונות עבור גרפים מסוימים. כאשר ידוע לנו שהגרפים עליהם האלגוריתם פועל שייכים למשפחת גרפים מסוימת, כלומר מקיימים תכונה מסוימת, ניתן למצוא יצוג שיינצל את התכונה כדי לקבל זמן ריצה יעיל עבור פעולות הקשורות בה, או נפח אחסון נמוך. למשל, עץ ניתן לייצוג על ידי קביעת צומת כלשהו לשורש, ואחסון מצביע לאב (הצומת השכן שהמסלול היחיד לשורש עובר דרכו) עבור כל צומת אחר. יצוג כזה של עץ דורש Θ(|V|log|V|)displaystyle Theta ( מקום.
רקע היסטורי |
מאמרו של לאונרד אוילר על הגשרים של קניגסברג,[1] שהוצג בשנת 1735, נחשב לתוצאה המשמעותית הראשונה בתורת הגרפים. הוא גם נחשב לאחת מהתוצאות הטופולוגיות הראשונות בגאומטריה; כלומר, הוא לא תלוי במדידות כלשהן.
משפטים חשובים בתורת הגרפים |
- משפט החתונה של הול
- משפט רמזי
נוסחת קיילי - נוסחה לחישוב מספר העצים הפורשים בגרף השלם על n קודקודים מסומנים
בעיות מרכזיות בתורת הגרפים |
צביעה של גרפים: בעיית ארבעת הצבעים- בעיות מסלולים:
- הגשרים של קניגסברג
- עץ פורש מינימלי
- בעיית הדוור הסיני
- בעיית הסוכן הנוסע
- בעיות זרימה בגרף
- משפט הזרימה המקסימלית והחתך המינימלי
אלגוריתמים חשובים |
אלגוריתם חיפוש לרוחב (BFS) לסריקה של צומתי הגרף.
אלגוריתם חיפוש לעומק (DFS) לסריקה של צומתי הגרף.
האלגוריתם של דייקסטרה למציאת המסלול הקצר ביותר מצומת בגרף לשאר הצמתים.
האלגוריתם של בלמן-פורד למציאת המסלול הקצר ביותר מצומת בגרף לשאר הצמתים.
האלגוריתם של פלויד-וורשאל למציאת המסלולים הקצרים ביותר בין כל הזוגות בגרף.
האלגוריתם של קרוסקל למציאת עץ פורש מינימלי.
האלגוריתם של פרים למציאת עץ פורש מינימלי.
קישורים חיצוניים |
במשיכת קולמוס אחת, על בעיית הגשרים של קניגסברג, באתר אלף אפס
תורת הגרפים בeitan.ac.il, בעיקר על אלגוריתמים בתורת הגרפים
סיכום - תורת הגרפים, אתר סיכומונה
תורת הגרפים, באתר אנציקלופדיה למתמטיקה (באנגלית)
תורת הגרפים, באתר MathWorld (באנגלית)
הערות שוליים |
^ E53 -- Solutio problematis ad geometriam situs pertinentis
נושאים בתורת הגרפים | ||
---|---|---|
הגדרות | צומת • קשת • דרגה • מסלול • מרחק | |
מבנים | גרף • גרף ממושקל • מעגל • גרף מקרי • היפרגרף • מולטיגרף • עץ • קומפלקס | |
בניות וטיפוסים | גרף משלים • גרף קיילי • גרף שלם • גרף תחרות • גרף תשתית • עץ פורש • רשת זרימה • שידוך | |
תכונות | גרף n-צביע • גרף דו-צדדי • גרף מישורי • גרף מרחיב • גרף רגולרי • גרף קשיר • עץ בינומי • עץ פורש מינימלי |
תחומים במדעי המחשב | ||
---|---|---|
יסודות מתמטים | לוגיקה מתמטית • תורת הקבוצות • תורת המספרים • תורת הגרפים • תורת הטיפוסים • תורת הקטגוריות • אנליזה נומרית • תורת האינפורמציה | |
תורת החישוביות | תורת האוטומטים • תורת הרקורסיה • תורת הסיבוכיות • מחשוב קוונטי | |
אלגוריתמים ומבנה נתונים | אנליזה של אלגוריתמים • עיצוב אלגוריתמים • גאומטריה חישובית | |
שפות תכנות ומהדרים | ניתוח מלל • מפרש • תכנות פרוצדורלי • תכנות מונחה עצמים • תכנות פונקציונלי • תכנות לוגי • פרדיגמת תכנות | |
חישוב מבוזר, ועיבוד מקבילי | עיבוד מרובה • מחשוב סריגי • בקרת מקביליות | |
הנדסת תוכנה | ניתוח מערכות מידע • עיצוב תוכנה • תכנות מחשבים • מתודות פורמליות • בדיקות תוכנה • מתודולוגיית פיתוח תוכנה | |
תקשורת | ניתוב • טופולוגיית רשת • קריפטוגרפיה | |
בסיס נתונים | מערכת לניהול בסיסי נתונים • מסד נתונים יחסי • SQL • תנועה • אינדקסים • כריית מידע | |
בינה מלאכותית | חשיבה אוטומטית • בלשנות חישובית • ראייה ממוחשבת • אינטליגנציה חישובית • מערכת מומחה • למידה חישובית • עיבוד שפה טבעית • רובוטיקה | |
גרפיקה | הדמיה ממוחשבת • הנפשה ממוחשבת • עיבוד תמונה | |
שימושים במדע | ביואינפורמטיקה • מדעים קוגניטיביים • כימיה חישובית • פיזיקה חישובית • אנליזה נומרית |
קטגוריה:
- תורת הגרפים
(window.RLQ=window.RLQ||[]).push(function()mw.config.set("wgPageParseReport":"limitreport":"cputime":"0.228","walltime":"0.377","ppvisitednodes":"value":1926,"limit":1000000,"ppgeneratednodes":"value":0,"limit":1500000,"postexpandincludesize":"value":26004,"limit":2097152,"templateargumentsize":"value":15830,"limit":2097152,"expansiondepth":"value":9,"limit":40,"expensivefunctioncount":"value":7,"limit":500,"unstrip-depth":"value":0,"limit":20,"unstrip-size":"value":1162,"limit":5000000,"entityaccesscount":"value":1,"limit":400,"timingprofile":["100.00% 201.274 1 -total"," 28.88% 58.125 2 תבנית:ניווט_קבוצות"," 22.73% 45.741 1 תבנית:תורת_הגרפים"," 15.83% 31.860 1 תבנית:מיזמים"," 14.29% 28.754 1 תבנית:הפניה_לערך_מורחב"," 12.60% 25.354 1 תבנית:MathWorld"," 11.37% 22.876 1 תבנית:הערה"," 10.46% 21.063 13 תבנית:מיזם"," 9.83% 19.776 1 תבנית:מדעי_המחשב"," 8.62% 17.341 1 תבנית:אנציקלופדיה_למתמטיקה"],"scribunto":"limitreport-timeusage":"value":"0.042","limit":"10.000","limitreport-memusage":"value":1554063,"limit":52428800,"cachereport":"origin":"mw1256","timestamp":"20190409181131","ttl":2592000,"transientcontent":false););"@context":"https://schema.org","@type":"Article","name":"u05eau05d5u05e8u05ea u05d4u05d2u05e8u05e4u05d9u05dd","url":"https://he.wikipedia.org/wiki/%D7%AA%D7%95%D7%A8%D7%AA_%D7%94%D7%92%D7%A8%D7%A4%D7%99%D7%9D","sameAs":"http://www.wikidata.org/entity/Q131476","mainEntity":"http://www.wikidata.org/entity/Q131476","author":"@type":"Organization","name":"u05eau05d5u05e8u05deu05d9u05dd u05dcu05deu05d9u05d6u05deu05d9 u05d5u05d9u05e7u05d9u05deu05d3u05d9u05d4","publisher":"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":"@type":"ImageObject","url":"https://www.wikimedia.org/static/images/wmf-hor-googpub.png","datePublished":"2003-08-01T17:26:31Z","dateModified":"2019-01-28T13:54:59Z","headline":"u05e2u05e0u05e3 u05d1u05deu05eau05deu05d8u05d9u05e7u05d4"(window.RLQ=window.RLQ||[]).push(function()mw.config.set("wgBackendResponseTime":140,"wgHostname":"mw1258"););