Кіріспе
Графтың бір төбесінен екіншісіне жетуге болады ма? Граф теориясында жету – графтың бір төбесінен екіншісіне жету мүмкіндігін білдіреді. Егер бір төбеден екінші төбеге жетуге болатын болса (және одан), онда сол төбелердің арасында көршілес төбелер тізбегі (яғни, жол) болуы керек, ол бірінші төбеден басталып, екінші төбеде аяқталады. Бағытталмаған графтарда барлық төбелер жұбы арасындағы жету мүмкіндігін графтың байланысты компоненттерін анықтау арқылы анықтауға болады. Егер екі төбе бір байланысты компонентке жатса, олар бір-біріне жетуге болады; демек, мұндай графтарда жету симметриялы болады (егер төбе А төбе В-ға жете алса, онда төбе В төбе А-ға жете алады). Бағытталмаған графтың байланысты компоненттерін сызықтық уақытта анықтауға болады. Осы мақаланың қалған бөлігі бағытталған графтарда төбелер жұбы арасындағы жетуді анықтаудың қиын мәселесіне назар аударады (мұндай графтар симметриялы болуы міндетті емес).
In graph theory, reachability refers to the ability to get from one vertex to another within a graph. A vertex can reach a vertex (and is reachable from ) if there exists a sequence of adjacent vertices (i. e. a walk) which starts with and ends with
In an undirected graph, reachability between all pairs of vertices can be determined by identifying the connected components of the graph. Any pair of vertices in such a graph can reach each other if and only if they belong to the same connected component; therefore, in such a graph, reachability is symmetric ( reaches iff reaches ). The connected components of an undirected graph can be identified in linear time. The remainder of this article focuses on the more difficult problem of determining pairwise reachability in a directed graph (which, incidentally, need not be symmetric).
Анықтама
Бағытталған граф үшін, төбелер жиыны және қабырғалар жиыны бар болса, графтың қолжетімділік қатынасы – бұл оның транзитивті жабылуы, яғни графтың төбелерінің барлық реттелген жұптарының жиыны, мұндағы әрбір жұп үшін қабырғалардың тізбегі бар, осылайша кез келген қабырға графтың ішінде болады. Егер граф циклдық болмаса, онда оның қолжетімділік қатынасы ішінара тәртіп болады; кез келген ішінара тәртіп осылай анықталуы мүмкін, мысалы, оның транзитивті қысқартуының қолжетімділік қатынасы ретінде. Бұл туралы маңызды тұжырым – ішінара тәртіптер антисимметриялы болғандықтан, егер бір төбеге екінші төбеден жете алсақ, онда екінші төбе бірінші төбеге жете алмайды. Интуитивті түрде, егер біз бір төбеден екінші төбеге және қайтадан бірінші төбеге бара алсақ, онда графтың ішінде цикл болар еді, бұл оның циклдық еместігіне қайшы келер еді. Егер граф бағытталған, бірақ циклдық болмаса (яғни, оның ішінде кем дегенде бір цикл бар), онда оның қолжетімділік қатынасы ішінара тәртіп емес, алдын ала тәртіпке сәйкес келеді.
If is acyclic, then its reachability relation is a partial order; any partial order may be defined in this way, for instance as the reachability relation of its transitive reduction. A noteworthy consequence of this is that since partial orders are anti symmetric, if can reach , then we know that cannot reach Intuitively, if we could travel from to and back to , then would contain a cycle, contradicting that it is acyclic. If is directed but not acyclic (i. e. it contains at least one cycle), then its reachability relation will correspond to a preorder instead of a partial order.
Алгоритмдер
Жетілуді анықтау алгоритмдері екі топқа бөлінеді: алдын ала өңдеу қажет болатындары және қажет болмайтындары. Егер сізде тек бір (немесе бірнеше) сұраныс болса, күрделірек дерек құрылымдарын пайдаланудан бас тартып, қажетті жұптың жетілуін тікелей есептеу тиімдірек болуы мүмкін. Мұны кеңдік бойынша іздеу немесе итеративті тереңдеу тереңдік бойынша іздеу сияқты алгоритмдерді қолдану арқылы сызықтық уақытта орындауға болады. Егер сіз көптеген сұраныстар жасасаңыз, онда күрделірек әдіс қолданылуы мүмкін; әдістің нақты таңдалуы талданатын графтың ерекшеліктеріне байланысты. Алдын ала өңдеу уақыты мен қосымша жад орынына ие болып, біз дерек құрылымын құра аламыз, ол кез келген екі төбе арасындағы жетілу сұранысына мүмкіндігінше жылдам жауап бере алады. Төменде үш түрлі, күрделілігі арта түсетін жағдайлар үшін үш түрлі алгоритм мен дерек құрылымы сипатталған.
Флойд-Воршалл алгоритмі
Флойд-Уоршалл алгоритмі кез келген бағытталған графтың транзитивті жабылуын есептеу үшін қолданылуы мүмкін, бұл жоғарыдағы анықтамадағыдай қолжетімділік қатынасын тудырады. Алгоритмге ең жаман жағдайда уақыт пен жад қажет. Бұл алгоритм тек қолжетімділікке ғана емес, сонымен қатар барлық төбелер арасындағы ең қысқа жолдың қашықтығын есептейді. Теріс циклдары бар графтар үшін ең қысқа жолдар анықталмауы мүмкін, бірақ төбелер жұбы арасындағы қолжетімділікті анықтауға болады.
Қатысушы мәселелер
Осыған байланысты мәселе – белгілі бір мөлшерде төбелердің істен шығуымен қолжетімділік сұраныстарын шешу. Мысалы: «Төбелер істен шығып, енді қолданылмайтын болса да, бір төбеден екінші төбеге жете алады ма?» Ұқсас мәселе төбелердің емес, қабырғалардың істен шығуына, немесе екеуінің араласуына қатысты болуы мүмкін. Бұл жағдайда да кеңдік бойынша іздеу әдісі жақсы жұмыс істейді, бірақ тиімді анықтағыш құру қиынға соғады. Қолжетімділік сұраныстарымен байланысты тағы бір мәселе – графтың бір бөлігі өзгерген кезде қолжетімділік қатынастарындағы өзгерістерді жылдам қайта есептеу. Мысалы, бұл жадты босатуды (оны қайта бөлу үшін) жұмыс істеп тұрған қосымшаның өнімділігімен үйлестіруі қажет қоқыс жинау үшін маңызды мәселе.