מטריצת שכנות – הבדלי גרסאות

מתוך ויקיפדיה, האנציקלופדיה החופשית
תוכן שנמחק תוכן שנוסף
Legobot (שיחה | תרומות)
מ בוט: מעביר קישורי בינויקי לויקינתונים - d:q727035
←‏תכונות: היה כתוב שמקבלים גרף משלים ע"י חיסור מטריצת הגרף ממטריצה שכל ערכיה 1. במקום זה כתבתי ממטריצה של גרף שלם כי לרוב מדובר בגרף פשוט
שורה 16: שורה 16:
לייצוג גרף בשיטה זו יש יתרונות רבים:
לייצוג גרף בשיטה זו יש יתרונות רבים:
# הוספה/מחיקת קשת מתבצעת בגישה מיידית, ב[[סיבוכיות זמן]] של <math>\ O(1)</math>{{כ}}.
# הוספה/מחיקת קשת מתבצעת בגישה מיידית, ב[[סיבוכיות זמן]] של <math>\ O(1)</math>{{כ}}.
#ניתן לחשב את ה[[גרף משלים|גרף המשלים]] בקלות על ידי חיסור של מטריצת השכנות ממטריצת שכנות של ערכיה הם 1. כך, בכל מקום שהיה בו קשת, כלומר ערך 1, יהיה 0 ובכל מקום שהיה בו 0, יהיה 1.
#ניתן לחשב את ה[[גרף משלים|גרף המשלים]] בקלות על ידי חיסור של מטריצת השכנות ממטריצת שכנות של גרף שלם. כך, בכל מקום שהיה בו קשת, כלומר ערך 1, יהיה 0 ובכל מקום שהיה בו 0, יהיה 1.
#[[סיבוכיות מקום]] קטנה יחסית לשמירת המטרציה בזיכרון, <math>\ \Theta(|V|^2)</math> סיביות.
#[[סיבוכיות מקום]] קטנה יחסית לשמירת המטרציה בזיכרון, <math>\ \Theta(|V|^2)</math> סיביות.



גרסה מ־11:57, 12 בנובמבר 2013

דוגמה למטריצת שכנות של גרף לא מכוון

מטריצת שכנוּ‏ת (גם מטריצת סמיכויות או מטריצת שכנויות) היא שיטה לייצוג גרף מכוון בעל צמתים בעזרת מטריצה ריבועית בגודל , שערכי תאיה הם 0 או 1. תא (i,j) בגרף מתאר את קיומה (או העדרה) של הקשת המכוונת מקודקוד i לקודקוד j בגרף. אם אין קשת כזו, הערך בתא במטריצה יהיה 0. אם יש קודקוד כזה, אזי הערך יהיה 1. פעמים רבות דנים בתורת הגרפים בגרפים פשוטים;

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

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

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

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

תכונות

לייצוג גרף בשיטה זו יש יתרונות רבים:

  1. הוספה/מחיקת קשת מתבצעת בגישה מיידית, בסיבוכיות זמן של ‏.
  2. ניתן לחשב את הגרף המשלים בקלות על ידי חיסור של מטריצת השכנות ממטריצת שכנות של גרף שלם. כך, בכל מקום שהיה בו קשת, כלומר ערך 1, יהיה 0 ובכל מקום שהיה בו 0, יהיה 1.
  3. סיבוכיות מקום קטנה יחסית לשמירת המטרציה בזיכרון, סיביות.

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