Қол жетімділік - Reachability

Жылы графтар теориясы, қол жетімділік біреуінен алу қабілетін айтады шың графиктің ішіндегі екіншісіне. Шың шыңына жетуі мүмкін (және қол жетімді ) егер тізбегі болса іргелес шыңдар (яғни а жол ) басталады және аяқталады .

Бағытталмаған графикте барлық жұп шыңдар арасындағы қол жетімділікті анықтау арқылы анықтауға болады қосылған компоненттер график. Мұндай графиктегі кез-келген төбелер жұбы бір-біріне жете алады егер және егер болса олар бірдей жалғанған компонентке жатады; сондықтан мұндай графикте қол жетімділік симметриялы ( жетеді iff жетеді ). Бағытталмаған графиктің қосылған компоненттерін сызықтық уақытта анықтауға болады. Осы мақаланың қалған бөлігі а-да жұптық қол жетімділікті анықтаудың неғұрлым күрделі мәселесіне бағытталған бағытталған граф (айтпақшы, симметриялы болмауы керек).

Анықтама

Бағытталған график үшін , шыңмен орнатылған және жиек жиынтығы , қол жетімділік қатынас туралы болып табылады өтпелі жабылу туралы , бұл барлық тапсырыс берілген жұптардың жиынтығын айту шыңдарының ол үшін шыңдар тізбегі бар жиегі сондай ішінде барлығына .[1]

Егер болып табылады ациклді, онда оның қол жетімділік қатынасы а ішінара тапсырыс; кез-келген ішінара тәртіпті осылайша анықтауға болады, мысалы, оның қол жетімділік қатынасы ретінде өтпелі редукция.[2] Мұның назар аударарлық салдары: егер ішінара бұйрықтар анти-симметриялы болса жете алады , содан кейін біз мұны білеміз мүмкін емес жету . Интуитивті, егер біз саяхаттай алсақ дейін және кері , содан кейін құрамында а цикл, оның ациклді екеніне қайшы келеді бағытталған, бірақ емес ациклді (яғни құрамында кем дегенде бір цикл бар), онда оның қол жетімділік қатынасы а-ға сәйкес келеді алдын ала берілетін тапсырыс ішінара тапсырыс орнына.[3]

Алгоритмдер

Қол жетімділікті анықтау алгоритмдері екі класқа бөлінеді: қажет ететіндер алдын-ала өңдеу ал олай етпейтіндер.

Егер сізде тек бір (немесе бірнеше) сұраныстар болса, мәліметтер құрылымын қолданудан бас тарту және қажетті жұптың қол жетімділігін тікелей есептеу тиімді болуы мүмкін. Мұны жүзеге асыруға болады сызықтық уақыт сияқты алгоритмдерді қолдана отырып бірінші іздеудің кеңдігі немесе тереңдетуді тереңдету - бірінші іздеу.[4]

Егер сіз көптеген сұрақтар қоятын болсаңыз, онда неғұрлым күрделі әдіс қолданылуы мүмкін; әдісті дәл таңдау талданатын графиканың сипатына байланысты. Алдын ала өңдеу уақыты мен қосымша сақтау кеңістігінің орнына біз деректер құрылымын құра аламыз, содан кейін кез-келген шыңдардағы қол жетімділік туралы сұрауларға төмен деңгейде жауап бере аламыз. уақыт. Үш түрлі алгоритмдер және үш түрлі, барған сайын мамандандырылған жағдайларға арналған мәліметтер құрылымы төменде келтірілген.

Флойд-Уоршалл алгоритмі

The Floyd – Warshall алгоритмі[5] кез келген бағытталған графиктің өтпелі тұйықталуын есептеу үшін пайдаланылуы мүмкін, бұл жоғарыдағы анықтамадағыдай қол жетімділік қатынасын тудырады.

Алгоритм қажет етеді уақыт және ең нашар жағдайда кеңістік. Бұл алгоритм тек қол жетімділікке қызықпайды, өйткені ол барлық шыңдар арасындағы ең қысқа қашықтықты есептейді. Теріс циклдары бар графиктер үшін ең қысқа жолдар анықталмаған болуы мүмкін, бірақ жұптар арасындағы қол жетімділікті атап өтуге болады.

Торуп алгоритмі

Үшін жазықтық диграфтар, сипатталғандай әлдеқайда жылдам әдіс бар Mikkel Thorup 2004 жылы.[6] Бұл әдіс қол жетімділік туралы сұрақтарға жазықтықтағы графикте жауап бере алады жұмсағаннан кейінгі уақыт деректер құрылымын құру үшін алдын-ала өңдеу уақыты өлшемі. Бұл алгоритм сонымен қатар маршрут туралы ақпаратты қоса алғанда, жолдың ең қысқа қашықтықтарын ұсына алады.

Жалпы тәсіл - бұл әр шыңмен салыстырмалы түрде кішігірім деп аталатын бөлгіш жолдар жиынтығы, шыңнан кез келген жол. кез келген басқа шыңға байланысты сепараторлардың кем дегенде біреуінен өтуі керек немесе . Қол жетімділікке қатысты бөлімдердің контуры келтірілген.

График берілген , алгоритм шыңдарды ерікті шыңнан бастап қабаттарға ұйымдастырудан басталады . Қабаттар кез-келген қадамдармен алдымен барлық шыңдарды қол жетімді етіп қарастырады бастап алдыңғы қадам (тек басталады ) содан кейін жететін барлық шыңдар дейін барлық шыңдар қабатқа тағайындалғанға дейінгі алдыңғы қадам. Қабаттардың құрылысы бойынша әр шың ең көп дегенде екі қабат пайда болады және әрқайсысы бағытталған жол, немесе дипат, in екі іргелес қабаттың ішінде болады және . Келіңіздер жасалған соңғы қабат, яғни үшін ең төменгі мән болыңыз осындай .

Содан кейін график диграфтар тізбегі түрінде қайта көрсетіледі қайда және қайда барлық алдыңғы деңгейлердің қысқаруы болып табылады бір шыңға. Әрбір дипат ең көп дегенде екі қабатта пайда болатындықтан және әрине екі дифат қатарынан түзіледі толығымен кем дегенде біреуінде пайда болады (және қатарынан екі графиктен артық емес)

Әрқайсысы үшін , үш сепаратор анықталды, олар жойылған кезде графикті үш компонентке бөледі, олардың әрқайсысы ең көп түпнұсқаның шыңдары. Қалай қарама-қарсы дипаттардың екі қабатынан тұрғызылған, әр сепаратор 2 дипаттан, жалпы барлық сепараторлардан 6 дипатқа дейін болуы мүмкін. Келіңіздер бұл дифат жиынтығы. Мұндай сепараторларды әрқашан табуға болатындығының дәлелі Жазықтық бөлгіш теорема Липтон мен Тарджан және бұл сепараторлар сызықтық уақытта орналасуы мүмкін.

Әрқайсысы үшін , бағытталған табиғаты жолдың басынан аяғына дейін оның шыңдарының табиғи индекстелуін қамтамасыз етеді. Әр төбе үшін жылы , біз бірінші шыңды орналасқан қол жетімді , және соңғы шыңы жетеді . Яғни, біз оның қаншалықты ерте болатынын қарастырамыз біз ала аламыз және біз қаншалықты алыс бола аламыз және әлі де оралу . Бұл ақпарат сақталады . Содан кейін кез-келген шыңдар үшін және , жете алады арқылы егер қосылады ертерек бастап қосылады .

Әрбір шыңы рекурсияның әрбір қадамы үшін жоғарыда көрсетілгендей белгіленеді. Бұл рекурсияның логарифмдік тереңдігі болғандықтан, барлығы қосымша ақпарат шыңда сақталады. Осы сәттен бастап, уақыттың алогарифмдік қол жетімділігі туралы сұрау қарапайым, сәйкес келетін әр белгіні қарау сияқты қарапайым. . Содан кейін түпнұсқа қағаз сұрау уақытын реттеу үшін жұмыс істейді .

Осы әдістің талдауларын қорытындылай отырып, алдымен қабаттасу шыңдарды әр шың тек қана қарастырылатын етіп бөлетіндігін ескеріңіз. рет. Алгоритмнің бөлгіш фазасы графикті ең көп құрамдас бөліктерге бөледі алгоритмдік рекурсия тереңдігіне әкелетін бастапқы графиктің мөлшері. Рекурсияның әр деңгейінде сепараторларды, сондай-ақ айырбасшылар арасындағы байланыстарды анықтау үшін тек сызықтық жұмыс қажет. Жалпы нәтиже тек алдын ала өңдеу уақыты әр шың үшін сақталған қосымша ақпарат.

Камеда алгоритмі

Камеда әдісі үшін қолайлы диграф және қосылды.
Әр шыңға DFS белгілерін көрсететін, Kameda алгоритмінен кейінгі жоғарыдағы график орындалды

Алдын ала өңдеудің бұдан да жылдам әдісі, 1975 жылы Т.Камеданың арқасында,[7]егер график болса қолдануға болады жазықтық, ациклді, сонымен қатар келесі қосымша қасиеттерді көрсетеді: барлығы 0-дәреже және барлығы 0-жоғары дәреже төбелер бірдей пайда болады бет (көбінесе сыртқы бет деп жорамалдайды) және сол беттің шекарасын екі бөлікке бөлуге болады, осылайша барлық 0 градус шыңдары бір бөлігінде, ал барлығында 0 шыңдары екінші жағында пайда болады (яғни екі тип) шыңдары ауыспалы емес).

Егер осы қасиеттерді көрсетеді, содан кейін графикті тек алдын-ала өңдей аламыз тек уақытты ғана сақтаңыз шыңына қосымша биттер, кез-келген шыңға жетуге болатын сұрауларға жауап беру уақытты қарапайым салыстырумен.

Алдын ала өңдеу келесі әрекеттерді орындайды. Біз жаңа шың қосамыз әр 0 шыңының шеті бар және тағы бір жаңа шың әр 0-деңгейлі шыңнан шеттермен. Қасиеттері екенін ескеріңіз жоспарлауды сақтай отырып, мұны істеуге мүмкіндік беріңіз, яғни осы толықтырулардан кейін әлі де шекарадан өту болмайды. Әр шың үшін біз графиктің жазықтық реті бойынша (мысалы, графиктің енуіне қатысты сағат тілімен) іргелес тізімдерді сақтаймыз (шеткі). Содан кейін біз санауышты инициализациялаймыз және бастап Тереңдігі-Бірінші траверсалы басталады . Бұл жүріс кезінде әр шыңның көршілес тізіміне қажеттілік бойынша солдан оңға қарай кіреді. Шыңдар траверсталь стекінен шығарылған кезде, олар мәнмен белгіленеді , және содан кейін азаяды. Ескертіп қой әрқашан мәнімен белгіленеді және әрқашан белгісімен белгіленеді . Содан кейін тереңдіктен бірінші өтпелі қозғалыс қайталанады, бірақ бұл жолы әр шыңның көрші тізімі оңнан солға қарай қаралады.

Аяқтағаннан кейін, және және олардың шеттері жойылады. Әрбір қалған шыңнан бастап мәндері бар 2 өлшемді белгіні сақтайды дейін .Екі шың берілген және және олардың белгілері және , біз мұны айтамыз егер және егер болса , және кем дегенде бір компонент бар немесе бұл қатаң емес немесе сәйкесінше.

Бұл әдістің негізгі нәтижесі содан кейін қол жетімді егер және тек егер , ол оңай есептеледі уақыт.

Байланысты проблемалар

Осыған байланысты мәселе - қол жетімділік туралы сұраныстарды кейбір нөмірлермен шешу шыңдардағы ақаулар. Мысалы: «Can vertex әлі де шыңға жету шыңдар болса да сәтсіздікке ұшырады және оны енді пайдалануға болмай ма? «Ұқсас проблема шыңдардағы ақауларды немесе екеуін араластыруды қарастыруы мүмкін. Бірінші іздеу техникасы осындай сұрауларда да жұмыс істейді, бірақ тиімді оракул салу көп ынталандырушы.[8][9]

Қол жетімділікке байланысты тағы бір проблема - графиктің кейбір бөлігі өзгерген кезде қол жетімділік қатынастарындағы өзгерістерді жылдам қайта есептеу. Мысалы, бұл қатысты мәселе қоқыс шығару ол жадының мелиорациясын (оны қайта бөлу үшін) жұмыс істеп тұрған қосымшаның өнімділігімен теңестіруді қажет етеді.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Скиена, Стивен С. (2011), «15.5 Өтпелі тұйықталу және қысқарту», Алгоритмді жобалау жөніндегі нұсқаулық (2-ші басылым), Спрингер, 495–497 б., ISBN  9781848000698.
  2. ^ Кон, Пол Мориц (2003), Негізгі алгебра: топтар, сақиналар және өрістер, Springer, б. 17, ISBN  9781852335878.
  3. ^ Шмидт, Гюнтер (2010), Реляциялық математика, Математика энциклопедиясы және оның қолданылуы, 132, Кембридж университетінің баспасы, б. 77, ISBN  9780521762687.
  4. ^ Герстинг, Джудит Л. (2006), Информатикаға арналған математикалық құрылымдар (6-шы басылым), Макмиллан, б. 519, ISBN  9780716768647.
  5. ^ Кормен, Томас Х.; Лейзерсон, Чарльз Э.; Ривест, Рональд Л.; Штайн, Клиффорд (2001), «Бағытталған графиктің өтпелі жабылуы», Алгоритмдерге кіріспе (2-ші басылым), MIT Press және McGraw-Hill, 632-663 б., ISBN  0-262-03293-7.
  6. ^ Торуп, Миккел (2004), «Жазықтықтағы диграфтардағы қол жетімділік пен арақашықтықтың ықшамдығы», ACM журналы, 51 (6): 993–1024, дои:10.1145/1039488.1039493, МЫРЗА  2145261, S2CID  18864647.
  7. ^ Камеда, Т (1975), «Пландық бағытталған графиктердегі қол жетімділіктің векторлық көрінісі туралы», Ақпаратты өңдеу хаттары, 3 (3): 75–77, дои:10.1016/0020-0190(75)90019-8.
  8. ^ Деметреску, Камил; Торуп, Миккел; Чодри, Резаул Алам; Рамачандран, Виджая (2008), «Істен шыққан түйінді немесе сілтемені болдырмайтын қашықтыққа арналған оракулдар», Есептеу бойынша SIAM журналы, 37 (5): 1299–1318, CiteSeerX  10.1.1.329.5435, дои:10.1137 / S0097539705429847, МЫРЗА  2386269.
  9. ^ Хальтермейер, Пьер, Желілердегі қосылым және төтенше жағдайларды жоспарлау үшін ықшам таңбалау схемалары, Бордо Университеті.