Кіріспе
Бағытталған графиктің кез келген төбесінен қолжетімді компоненттері бар графиктердің бөлінісі. Бағытталған графиктердің математикалық теориясында, егер кез келген төбе басқа барлық төбелерден қолжетімді болса, онда график берік байланысқан деп айтылады. Бағытталған графиктің берік байланысқан компоненттері өзі берік байланысқан кішіграфиктерге бөлінеді. График берік байланысқандығын тексеру немесе оның берік байланысқан компоненттерін сызықтық уақытта (яғни Θ(V + E)) табу мүмкін.
In the mathematical theory of directed graphs, a graph is said to be strongly connected if every vertex is reachable from every other vertex. The strongly connected components of a directed graph form a partition into subgraphs that are themselves strongly connected. It is possible to test the strong connectivity of a graph, or to find its strongly connected components, in linear time (that is, Θ(V + E )).
Анықтамалар
Егер график кез келген екі түйіні арасында екі бағытта да жол болса, онда бағытталған график берік байланысқан деп аталады. Яғни, жұптың бірінші түйінінен екіншісіне, ал екінші түйінінен біріншісіне жол болуы керек. Өзі берік байланыспаған бағытталған G графигінде, егер екі түйіннің арасында екі бағытта да жол болса, u және v түйіндері бір-бірімен берік байланысқан деп айтылады. Берік байланысқандық екілік қатынасы эквиваленттік қатынас болып табылады, ал оның эквиваленттік кластарының туындыланған ішкі графтары берік байланысқан компоненттер деп аталады. Басқаша айтқанда, бағытталған G графигінің берік байланысқан компоненті – бұл берік байланысқан ішкі граф, және бұл қасиет бойынша максималды: G-ден қосымша қабырғалар немесе түйіндерді қосу оның берік байланысқан қасиетін жоймайынша, ішкі графқа қосылмайды. Берік байланысқан компоненттердің жиынтығы G графигінің түйіндер жиынын бөліске бөледі. Егер берік байланысқан компонент C өзіне-өзі қабырғасымен байланыспаған бір түйінен тұрса, онда ол тривиалды компонент деп аталады, әйтпесе – тривиалды емес. Әрбір берік байланысқан компонент бір түйінге дейін қысқартылса, нәтижесінде бағытталған ациклді граф пайда болады, бұл G графигінің конденсациясы. Бағытталған граф ациклді болады, егер және тек қана оның бірден көп түйіні бар берік байланысқан ішкі графтары болмаса, себебі бағытталған цикл берік байланысқан, ал әрбір тривиалды емес берік байланысқан компонентте кем дегенде бір бағытталған цикл болады.
DFS-ге негізделген сызықтық уақыт алгоритмдері
Тереңдікті бірінші іздеуге негізделген бірнеше алгоритмдер сызықтық уақытта қатты байланысқан компоненттерді есептейді. Косараджу алгоритмі тереңдікті бірінші іздеудің екі рет өтуін қолданады. Біріншісі, бастапқы граф бойынша, екінші тереңдіктік іздеудің сыртқы цикліндегі түйіндерді бұрын барылған-барылмағанын тексеру және оларды рекурсивті түрде зерттеу ретін анықтау үшін пайдаланылады. Екінші тереңдіктік іздеу бастапқы графтың транспоздық графигінде жүргізіледі, және әрбір рекурсивті зерттеу бір жаңа қатты байланысқан компонентті табады. 1972 жылы Роберт Таржан жариялаған Таржанның қатты байланысқан компоненттер алгоритмі тереңдікті бірінші іздеудің бір рет өтуін жүргізеді. Ол іздеу барысында зерттелген, бірақ әлі компонентке тағайындалмаған түйіндердің стегін сақтайды және әр түйін үшін "төменгі сандарды" (түйіннің ұрпағынан бір қадамда қолжетімді ең жоғары ата-бабасының индексі) есептейді, оларды түйіндер жиынтығын стектен алып, жаңа компонентке қосу қажеттілігін анықтау үшін пайдаланады. Жолға негізделген мықты компонент алгоритмі, Таржан алгоритмі сияқты, тереңдікті бірінші іздеуді қолданады, бірақ екі стекпен. Стектердің бірі компоненттерге әлі тағайындалмаған түйіндерді қадағалау үшін, ал екіншісі тереңдіктік іздеу ағашындағы ағымдағы жолды қадағалау үшін қолданылады. Бұл алгоритмнің алғашқы сызықтық уақыттық нұсқасын 1976 жылы Эдсгер В. Дийкстра жариялады. Косараджу алгоритмі түсінік тұрғысынан қарапайым болғанымен, Таржан және жолға негізделген алгоритмдерге екі емес, бір тереңдікті бірінші іздеу қажет.
Жетілу қабілетіне негізделген алгоритмдер
Бұрынғы сызықтық уақыт алгоритмдері тереңдікке бірінші іздеуге негізделген, оны параллельдеу қиын деп есептеледі. 2000 жылы Флейшер және авторлар қолжетімділік сұраныстарына негізделген «бөліп-басқару» әдісін ұсынды, және мұндай алгоритмдер әдетте қолжетімділікке негізделген SCC алгоритмдері деп аталады. Бұл тәсілдің идеясы – кездейсоқ түйін-орталықты таңдап, осы түйінден алға және артқа қолжетімділік сұраныстарын жүргізу. Екі сұраныс түйін жиынын 4 кіші жиынға бөледі: екеуіне де, біреуіне ғана, немесе ешқайсысына да қолжеткізген түйіндер. Қатты байланысқан компоненттің бір кіші жиынға кіруі керек екенін көрсетуге болады. Екі іздеуде де қолжеткен түйін кіші жиыны – қатты байланысқан компонентті құрайды, ал алгоритм қалған 3 кіші жиын бойынша рекурсиялық түрде қайталанады. Бұл алгоритмнің күтілетін тізбектік орындалу уақыты O(n log n) шамасына тең, бұл классикалық алгоритмдерге қарағанда O(log n) есе көп. Параллелизм мыналардан туындайды: (1) қолжетімділік сұраныстарын оңайрақ параллельдеуге болады (мысалы, ені бірінші іздеу (BFS) арқылы, және егер графтың диаметрі кішкентай болса, бұл жылдам болуы мүмкін); және (2) «бөліп-басқару» процесіндегі кіші тапсырмалардың тәуелсіздігі. Бұл алгоритм нақты әлемдегі графтарда жақсы жұмыс істейді, бірақ параллелизмге қатысты теориялық кепілдік берілмейді (мысалы, графтың қабырғалары болмаса, алгоритмге O(n) рекурсия деңгейлері қажет). Блелох және авторлар 2016 жылы көрсеткендей, егер қолжетімділік сұраныстары кездейсоқ тәртіппен қолданылса, O(n log n) шығын мөлшері сақталады. Сонымен қатар, сұраныстарды префикс еселеу әдісімен (яғни 1, 2, 4, 8 сұраныс) жинақтап, бір ретте бір уақытта орындауға болады. Бұл алгоритмнің жалпы уақыты log2 n қолжетімділік сұранысына тең, бұл, мүмкін, қолжетімділікке негізделген тәсілді пайдалану арқылы қол жеткізілетін ең жоғары параллелизм деңгейі.
Қатты байланысқан кездейсоқ графиктерді құру
Питер М. Маурер мықты байланысты графиктерді кездейсоқ жасау алгоритмін сипаттайды, ол мықты байланысты күшейту алгоритмін өңдеуге негізделген – графикті мықты байланысты ету үшін ең аз мүмкіндікпен жиектер қосу мәселесі. Гилберт немесе Эрдос-Рени модельдерімен түйіндерді қайта белгілеумен қолданғанда, алгоритм n түйіннен тұратын кез келген мықты байланысты графикті, жасалатын құрылымдардың түріне шектеу қоймай, құруға қабілетті.
Қолданбалар
Қатты байланысқан компоненттерді табу алгоритмдері 2-қанағаттандыру мәселелерін (жұптық мәнді айнымалылар жүйелерімен шектеулер салынған) шешуге қолданылуы мүмкін: көрсетілгендей, 2-қанағаттандыру мысалы қанағаттандырылмайды, егер және тек қана v айнымалысы және оның инверсиясы мысалдың импликациялық графигінің бірдей қатты байланысқан компонентіне кірсе. Қатты байланысқан компоненттер Дюльмаж-Мендельсон декомпозициясын есептеу үшін де қолданылады, бұл екі бөлікті графтың қабырғаларын, олар графтың толық сәйкестігінің бөлігі бола алатынына қарай классификациялайды.
Байланысты нәтижелер
Бағытталған граф тек қана егер оның құлақтарға жіктелуі болса, күшті байланысты болады – яғни, қабырғаларын бағытталған жолдар мен циклдер тізбегіне бөлу, мұнда тізбектегі алғашқы субграф цикл болса, ал әрбір келесі субграф алдыңғы субграфтармен бір төбесін бөлісетін цикл немесе екі ұшын бөлісетін жол болып табылады. Роббинс теоремасына сәйкес, бағытсыз граф 2 қабырғамен байланысқан болса ғана, оны күшті байланысты болатындай етіп бағдарлауға болады. Бұл нәтижені дәлелдеудің бір жолы – негізгі бағытсыз графтың құлақтарға жіктелуін табу және содан кейін әр құлақты тұрақты түрде бағдарлау.