עבור לתוכן

מימוש גרף בשפת ++C

Featured Replies

פורסם

מנסה ליצור מחלקה למימוש גרף באמצעות מטריצת סמיכויות.

זה הCONSTRUCTOR


G = new int *[size];

for (int i=0; i<size; i++)
{
G[i] = new int [size];
}

alut = NULL;

כשאני עושה עליו חיפוש לרוחב אני צריכה לעבור דברישון על קודקודים שיש להם קשר ישיר לקודקוד מקור.

ואז על קודקודים שיש להם מרחק של שתי קשתות וכו'

איך בודקים את זה?

פורסם

http://en.wikipedia.org/wiki/Breadth-first_search

הרעיון הוא להכניס את כל האיברים שעדיין לא צבעת לתור. לפני שאת רצה על כל הבנים של צומת מסויימת את צובעת אותה כדי לדעעת שאת לא צריכה לחזור אליה מאחד הבנים. בסוף הריצה על הבנים של הצומת תצבעי אותה בצצע אחר כדי לסמן שסיימת איתה.

פורסם
  • מחבר

עוד שאלה:

במימוש הגרף בכל תא במטריצה יש לי את משקל הקשת בין הקודקודים.

אני מנסה להפעיל את אלגוריתם דיאקסטרה אבל-

לתוך התור אני מכניסה את הקודקוד= העלות שלו, איך אני מסמנץ שהקודקוד נבדק???

(צריך לעשות STRUCT של קודקוד?)

פורסם

אפשרות אחת היא להכניס לתוך כל צומת שדה המציין את הסטטוס של הצומת.

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

לדוגמא: לתת אינדקס בין 0 עד N-1 לכל צומת (יש N צמתים). ואז מערך בגודל N של סטטוסים.

עוד שיטה: להשתמש במצביע של צומת כמזהה, ואז ב-hash table.

אם עובדים עם STL אפשר להשתמש ב-map.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים