גרף הוא זוג סדור כאשר היא קבוצת קודקודים ו קבוצת הקשתות -
לגרף פשוט (גרפים שאין בהם לולאות כלומר קשת מקודקוד לאותו קודקוד, ואין קשתות מקבילות כלומר הקשת מ א ל ב שקולה לקשת מ ב ל א. ) עם קודקודים יש לכל היותר קשתות.
גרף מכוון
גרף הוא מכוון אם סדר הקודקודים בקשת משנה , כלומר עבור קשת שמקשת היא זוג סדור . נאמר ש מכוונת מ ל
בגרף מכוון ייתכן מקרה שבו קשת יוצאת מקודקוד לזה, זה נקרא self loop
גרף לא מכוון
גרף הוא לא מכוון אם סדר הקודקודים בקשת לא משנה , עבור קשת
בגרף לא מכוון אין לולאות עצמיות.
הדרגה של קודקוד
בגרף לא מכוון
הדרגה של בגרף לא מכוון היא מספר הקשתות שמכילות את . סימון- ומתקיים (למת לחיצת הידיים)
בגרף מכוון
הדרגה היוצאת של קודקוד הוא מספר הקשתות מ ומסמנים . באופן דומה, הדרגה הנכנסת של קודקוד היא מספר הקשתות ל ומסומנת ומתקיים
קודקודים שכנים
בגרף מכוון ולא מכוון , אם יש קשת בין נאמר שהם שכנים .
מסלול
מסלול בגרף (מכוון או לא מכוון) הוא סדרה של קדוקדוים כאשר
ניתן לייצר מסלול גם על ידי קשתות כאשר . במקרה זה נאמר שהמסלול הוא מאורך (מספר הקשתות)
אם לכל מתקיים נאמר ש המסלול פשוט .
אם נאמר ש מהווה מעגל
תת מסלול של כאשר .
המסלול ההפוך של מסומן
רכיב קשירות
בגרף לא מכוון רכיב קשירות של הוא תת #גרף קשיר מקסימלי, כלומר קבוצת קודדקודים מקסימלית כך שלכל זוג קודקודים קיים מסלול מ ל ב .
גרף קשיר
גרף לא מכוון 𝑮 נקרא קשיר אמ"מ 𝑉 רכיב קשירות.
רכיב קשירות חזק
עבור גרף מכוון , רכיב קשירות חזק ב-𝐺 הוא קבוצה מקסימלית של קודקודים כך שלכל זוג קודקודים , קיים מסלול מ ל ומסלול מ ל ב
גרף קשיר חזק
גרף מכוון נקרא קשיר חזק אמ"מ 𝑉 רכיב קשירות חזק .
יער ועצים
יער : גרף לא מכוון ללא מעגלים
עץ : יער קשיר
עלה : ביער עלה הוא קודקוד עם דרגה 1.
תכונות
אם גרף הוא קשיר, אז
נוכיח באינדוקצייה על מספר הקודקודים: בסיס :
עבור אין קשתות ולכן .
עבור , גרף קשיר שזה רק קודקוד אחד ולכן מתקיים באותו אופן כמו למעלה. צעד:
נניח שהטענה נכונה עבור מספר קודקודים לפחות 2 כלומר ונוכיח עבור גרף קשיר עם קודקודים כלומר
נב״ש שמספר הקשתות קטן מ .
לפי למת לחיצת הידיים מתקיים
ז״א שקיים לפחות קודקוד אחד כך ש (כי יש קודקודים)
אם זה סתירה לכך ש קשיר
אם אז נחלק את הגרף לשתי רכיבי קשירות אחד עם קודקודים והשני עם קודקוד בודד. בגלל שהורדנו קשת אחד כדי ליצור שתי רכיבי קשירות אז הרכיב קשירות עם קודקודים מכיל קשתות. כמו כן זהו גרף קשיר אחרת עצמו לא היה קשיר וזה יהיה בסתירה לנתון. כיוון שהוא קשיר ומכיל קודקודים, מהנחת האינדוקצייה יתקיים
לא הגיוני שיש יותר או מספר זהה של קשתות מקודקודים בגרף לא מכוון בסתירה .
יהי גרף קשיר לא ריק אזי: עץ אמ״מ
יהי גרף עם רכיבי קשירות אזי: יער אמ״מ
יהי גרף לא מכוון אזי עץ אמ״מ עבור כל זוג קודקודים קיים בידיוק מסלול פשוט אחד בינהם.
עבור גרף עץ סופי עם , עץ זה חייב להכיל עלה.
נניח בשלילה שלא קיים עלה ב ויהיו עם קשתות המסלול הארוך ביותר ב . נתבונן ב , לפי ההנחה הוא לא עלה ולכן דרגתו גדולה או שווה ל2, כלומר ישלו לפחות 2 שכנים שאחד מהם הוא . נסמן את השני ב .
נשים לב ש אחרת היה מעגל בעץ וזו סתירה. כלומר נוכל להאריך את על ידי הגדרתו באופן הבא
וקיבלנו מסלול ארוך יותר בגודל בסתירה לכך ש הוא אורך המסלול הארוך ביותר.
עץ פורש
עץ פורש לגרף קשיר הוא עץ כאשר כלומר הוא תת גרף של שהוא עץ.
מולטי גרף
אם קבוצת הקשתות היא multi-set , כלומר קשתות יכולות להופיע יותר מפעם אחת, אז הגרף נקרא מולטי גרף.
במולטי גרף ייתכנו יותר מקשת אחת בין שני קודקודים, גם אם הקשתות לא מכוונות.
ייצוג גרפים בקוד
מטריצת שכנויות adjacency matrix
מייצגים את הגרף על ידי מטריצה בוליאנית בגודל כאשר התא הוא אמ״מ קיימת קשת בין ל ב .
נשים לב שאם הגרף לא מכוון נקבל מטריצה סימטרית, בנוסף האלכסון כולו אפסים כי לא תתכן קשת מקודקוד לעצמו.
הייצוג הזה משתמש ב זכרון.
רשימת שכנויות adjacency list
מייצגים את הגרף ע"י מערך של רשימות , המערך בגודל והתא ה במערך מצביע לרשימה של השכנים של , משתמשים בזכרון