Кіріспе

Бағытталған ациклді графиктерді реттеу

Компьютер ғылымында, топологиялық реттеу немесе бағытталған графиктің топологиялық сұрыпталуы – бұл оның төбелерінің сызықтық реті, мұнда әрбір бағытталған қабырға (u,v) үшін, төбе u-ден төбе v-ге, u реттеуде v-ден бұрын келеді. Мысалы, графиктің төбелері орындалуға тиіс тапсырмаларды білдіруі мүмкін, ал қабырғалары – бір тапсырманы екіншісінен бұрын орындау қажеттігін көрсететін шектеулерді білдіруі мүмкін; мұндай жағдайда топологиялық реттеу – тапсырмалардың орындалуының дұрыс тізбегі. Нақтырақ айтқанда, топологиялық реттеу – бұл графты аралау, онда әрбір төбе v оның барлық тәуелділіктері қарастырылғаннан кейін ғана қарастырылады. Топологиялық реттеу мүмкін болуы үшін графтың бағытталған циклдары болмауы керек, яғни ол бағытталған ациклді граф (DAG) болуы тиіс. Кез келген DAG кемінде бір топологиялық реттеуге ие, және кез келген DAG-тің топологиялық ретін сызықтық уақытта құруға арналған алгоритмдер белгілі. Топологиялық реттеудің көптеген қолданыс аймақтары бар, әсіресе кері байланыс доғалары сияқты рейтингілеу мәселелерінде. Топологиялық реттеу DAG-де ажыратылған компоненттер болған жағдайда да мүмкін.

Мысалдар

Топологиялық сұрыптаудың ең негізгі қолданылуы – жұмыс немесе тапсырмалардың тізбесін олардың өзара тәуелділіктеріне сәйкес жоспарлау болып табылады. Жұмыстар графтың түйіндерімен бейнеленеді, егер жұмыс x-ті аяқтамайынша, жұмыс y-ты бастау мүмкін болмаса, x-тен y-ға қарай жиек жүргізіледі (мысалы, киім жуу кезінде, киімді кептіргішке салу үшін алдымен кір жуатын машина аяқталуы керек). Осылайша, топологиялық сұрыптау жұмыстарды орындау ретін анықтайды. Топологиялық сұрыптау алгоритмдерінің тікелей байланысты қолданылуы алғаш рет 1960 жылдардың басында жобаларды басқарудағы жоспарлау үшін PERT әдісінің аясында зерттелді. Бұл қолданыста графтың түйіндері жобаның маңызды кезеңдерін, ал жиектер – бір кезеңнен екінші кезеңге өту үшін орындалуы тиіс тапсырмаларды көрсетеді. Топологиялық сұрыптау жобаның ең қиын жолын табуға арналған сызықтық уақыт алгоритмдерінің негізін құрайды, бұл жобаның жалпы кестесінің ұзақтығын анықтайтын кезеңдер мен тапсырмалардың тізбегі. Компьютер ғылымында осы типтегі қолданыстар нұсқауларды жоспарлау, электрондық кестелерде формула мәндерін қайта есептеу кезінде формула ұяшықтарын бағалау ретін анықтау, логикалық синтез, компиляция тапсырмаларын орындау ретін анықтау, деректерді сериализациялау және сілтемелердегі символ тәуелділіктерін шешу үшін қолданылады. Сондай-ақ, деректер базасында сыртқы кілттері бар кестелерді қандай ретпен жүктеу керектігін анықтау үшін де қолданылады.

Бірегейлігі

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

Ішінара тапсырыстармен байланыс

Топологиялық реттеулер математикадағы ішінара реттің сызықтық кеңейтілуі тұжырымдамасымен тығыз байланысты. Ішінара реттелген жиын – бұл объектілер жиынтығы және "≤" теңсіздік қатынасының анықтамасы, рефлексивтілік (x ≤ x), антисимметрия (егер x ≤ y және y ≤ x болса, онда x = y) және транзитивтілік (егер x ≤ y және y ≤ z болса, онда x ≤ z) аксиомаларын қанағаттандырады. Толық рет – бұл жиынтықтағы кез келген екі объекті x және y үшін x ≤ y немесе y ≤ x болатын ішінара рет. Толық реттер компьютерлік ғылымда салыстыру сұрыптау алгоритмдерін орындау үшін қажетті салыстыру операторлары ретінде белгілі. Шекті жиынтықтар үшін толық реттер объектілердің сызықтық тізбектерімен сәйкес келеді, мұнда "≤" қатынасы бірінші объекті екінші объектіден бұрын келгенде дұрыс болады; салыстыру сұрыптау алгоритмі толық ретті осылайша тізбекке түрлендіру үшін қолданылуы мүмкін. Ішінара реттің сызықтық кеңейтілуі – бұл онымен үйлесімді толық рет, яғни егер x ≤ y ішінара ретте болса, онда x ≤ y толық ретте де орындалады. Кез келген бағытталған ациклдік графтан (DAG) ішінара реттеуді графтың төбелерін объектілер жиынтығы ретінде қарастырып, кез келген екі төбе x және y үшін x ≤ y қатынасын шын деп анықтауға болады, егер x-тен y-ға бағытталған жол болса; яғни, егер y, x-тен қол жетімді болса. Осы анықтамалар бойынша DAG-ның топологиялық реттелуі осы ішінара реттің сызықтық кеңейтілуімен бірдей. Керісінше, кез келген ішінара ретті DAG-дегі қол жетімділік қатынасы ретінде анықтауға болады. Мұны істеудің бір жолы – ішінара реттелген жиынтықтағы әрбір объекті үшін төбесі бар DAG-ді және x ≤ y шартын қанағаттандыратын әрбір объектілер жұбы үшін xy жиегін анықтау. Мұны істеудің баламалы тәсілі – ішінара реттің транзитивті қысқартуын пайдалану; әдетте, бұл аз жиектері бар DAG-ді тудырады, бірақ бұл DAG-дегі қол жетімділік қатынасы сол ішінара рет болып қалады. Осы құрылымдарды пайдалану арқылы топологиялық реттеу алгоритмдерін ішінара реттің сызықтық кеңейтілуін табу үшін қолдануға болады.

Жоспарлауды оңтайландыруға қатысты

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