SmartToyBoy
New member
שאלה על קבוצות זרות
שלום לכולם! ביישום של קבוצות זרות כמציאת הרכיבים הקשירים בגרף בלתי מכוון, יש את האלגוריתם היסודי שמחשבת את הרכיבים הקשירים של גרף. זה אלגוריתם ידוע, שמתבצע כך (בקצרה): 1. לכל קודקוד בגרף עושים make_set ויוצרים קבוצה זרה 2. לכל קשת בגרף בודקים אם שני הקודקודים הנמצאים עליה שייכים לאותו רכיב קשיר בגרף כלומר האם find_setU = find_setV , ואם כן, אז מבצעים פעולת Union המאחדת את שתי הקבוצות של הקודקודים הללו. שאלתי היא כמה פעמים נקראות find_set ו Union במהלך הרצת האלגוריתם , אם V הוא מס' הקודקודים , E הקשתות ו-k הוא מס' הרכיבים הקשירים. אני חושב ש- find_set מתבצעת E פעמים כי בסה"כ פעולת הבדיקה שבה משתמשים ב- find_set מתבצעת עבור כל קשת. לגבי Union אני מבין שזה קשור למס' הרכיבים הקשירים בגרף , אבל איך => אולי V/k [חסם עליון של זה] חשבתי על כמה דברים אבל אני לא בטוח בתשובה , ואשמח אם תוכלו לעזור... תודה מראש
SmartToyBoy.
שלום לכולם! ביישום של קבוצות זרות כמציאת הרכיבים הקשירים בגרף בלתי מכוון, יש את האלגוריתם היסודי שמחשבת את הרכיבים הקשירים של גרף. זה אלגוריתם ידוע, שמתבצע כך (בקצרה): 1. לכל קודקוד בגרף עושים make_set ויוצרים קבוצה זרה 2. לכל קשת בגרף בודקים אם שני הקודקודים הנמצאים עליה שייכים לאותו רכיב קשיר בגרף כלומר האם find_setU = find_setV , ואם כן, אז מבצעים פעולת Union המאחדת את שתי הקבוצות של הקודקודים הללו. שאלתי היא כמה פעמים נקראות find_set ו Union במהלך הרצת האלגוריתם , אם V הוא מס' הקודקודים , E הקשתות ו-k הוא מס' הרכיבים הקשירים. אני חושב ש- find_set מתבצעת E פעמים כי בסה"כ פעולת הבדיקה שבה משתמשים ב- find_set מתבצעת עבור כל קשת. לגבי Union אני מבין שזה קשור למס' הרכיבים הקשירים בגרף , אבל איך => אולי V/k [חסם עליון של זה] חשבתי על כמה דברים אבל אני לא בטוח בתשובה , ואשמח אם תוכלו לעזור... תודה מראש