Кіріспе

Дикстра-Шолтен алгоритмі (Эдсгер В. Дикстра мен Карел С. Шолтеннің есімдерімен аталған) – таратылған жүйеде тоқтауды анықтауға арналған алгоритм. Алгоритм 1980 жылы Дикстра мен Шолтен тарапынан ұсынылған. Біріншіден, қарапайым процесс графигін, яғни ағаш тәрізді графикті қарастырайық. Ағаш құрылымды таратылған есептеулер жиі кездеседі. Мұндай процесс графигі есептеу қатаң түрде «бөл және билей» типінде болғанда туындауы мүмкін. Бір түйін есептеуді бастайды және мәселені екіге (немесе одан да көп, әдетте 2-нің есесінен) шамамен тең бөліктерге бөліп, осы бөліктерді басқа процессорларға жібереді. Бұл процесс проблемалар бір процессорда шешілуге жеткілікті кіші болғанша рекурсивті түрде жалғасады.

Ағаш үшін DijkstraScholten алгоритмі

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

Дийкстра-Шолтеннің бағытталған ациклді графиктер үшін алгоритмі

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