Ответ на сообщение:
viewtopic.php?p=44027#p44027О новом варианте визуализации параллелизма
Владимир Паронджанов писал(а):
Если я не прав или что-то упустил, прошу меня поправить.
А) Как я понимаю, базис структуризации 3х3 сокращён до 2х2 (по измерениям: числа одновременно работающих ветвей {один;много}; порядка выполнения ветвей {последовательно; одновременно}) и это хорошо. Однако само определение второго измерения и его значений у меня вызывает вопросы (уже на качественном уровне понимания). Во-первых - что понимается под порядком выполнения - м.б. порядок выбора для исполнения (одного или многих)? Отсюда во-вторых - м.б. не "последовательно/одновременно", а, скажем, "пространственно)/алгоритмически "? Первое реализовано в алгоязыках, в т.ч. ДРАКОНе, как порядок просмотра ветвей (вариантов). Второе предложено в МШ - составить систему условий прохода узла, которые вычисляются все и результат определяется их совокупностью (для расщепления - какие шампуры стартуют, для слияния - как результаты работы шампуров принимаются во внимание на финише), см.
в этом сообщении; Рэйлвей Каген, как я понимаю, говорил о том же, как об "алгоритмической расшифровке".
Интуитивно можно на этот случай тоже наложить смысл "последовательно/одновременно", но только если иметь в виду именно порядок просмотра ветвей. В противном случае получается, что ветви (Н-шампуры МШ-блока, в ГОСТ-терминологии - независимые параллельные действия, НПД) могут стартовать друг за другом, т.е. МШ-блок неявно "зациклен" с финиша на старт. Возможно, это тоже идея, но она д.б. явно выраженной сочинителем - раз и математически обоснованной - два (а скажем, интерпретация МШ-блока как сетевого графика, предложенная в этом сообщении таких оснований, похоже, не даёт).
Точнее, наверно, говорить не о зацикливании, а о силуэтном порядке ветвей в МШ-блоке (узел расщепления считаем "шапкой", узел сбора - "подвалом"; как я понимаю, это суть подхода Рэйлвей Каген). Однако в схеме с расщеплением ситуация иная: а) мы выполняем ветви в любом наборе, поэтому если хотим выполнить "что-то из одной ветви" следом за другой ветвью, то должны это "что-то" (шампур-блок) продублировать прямо в шампуре другой ветви следом за её исходной нагрузкой (а вообще-то можем сделать подстановку в любом месте шампура, т.е. такой подход даёт сочинителю нужные возможности);
б) выполнение ветвей условное, а не безусловное, как в силуэте, поэтому и введён "общий этаж" узла (расщепления -верхний, сбора - нижний) для записи этих условий (ну и объявления их величин, не объявленных ранее). При алгоритмизации этот "этаж" превращается в процесс запуска ветвей (при расщеплении) или в процесс контроля результатов работы ветвей (при сборе).; запускается также при расщеплении). Так алгоритмически "расшифровывается" соединение концов одних работ с началами других.
А может, не интерпретировать схему с расщеплением как сетевой график? И дать сочинителю свободу строить любые маршруты НПД, включая циклические? Однако вот такое замечание: "...работы, составляющие контуры, не могут начаться и ждут друг друга. Первая задача... - поиск контуров и их размыкание. Формализовать процесс размыкания контуров в данной ситуации невозможно; априорно допустимо любое упорядочение работ, и единственная приемлемая возможность разрешения коллизии - экспертный её анализ, вне рамок матмодели." (Романовский И.В. Дискретный анализ. - 3-е изд. - СПб, 2004, с. 230) - с которым полностью согласен.
Здесь неважно, что в петле цикла ничего нет - в сетях это фиктивная работа (с нулевой потребностью в ресурсах, включая время), вводимая для "сшивания" качественно сформулированного отношения порядка работ в математически корректное (сеть без контуров, где у каждой работы есть предшественники вплоть до начального узла). Содержание маршрута тоже "нулевое" - вроде бы пустой оператор, а на самом деле - Н-процесс с телом из одной шампур-иконы И20, докладывающей узлу сбора на конце о завершении того, что не делалось
(в Справке Ты-среды о том же говорится как о синхронизации); кстати, термин dummy-фиктивный, IMHO, идёт именно от сетевого понимания маршрутов с расщеплением. И такая работа всё равно не может образовывать контур.
А в других типах задач математика предлагает метод размыкания контуров с удалением маловажных (по приписанным весАм) дуг. И тут другое: "Вспомнив о необходимости размыкания контуров при составлении сетевого графика, вы можете подумать и о таком применении <данного метода>. Но это хороший пример фальшивой применимости модели - никакие искусственные "выгоды" не могут заменить поиска правильной последовательности работ." (Романовский, 2004, с. 258, сноска). В самом деле - получится, что мы ради размыкания удаляем работы, т.е. НПД.
Т.о. всё равно уйдя от сетевой интерпретации к алгоритмической - допускаем неопределённость, которую сочинителю так и так придётся преодолевать. И лучше не делать этого - тогда уже при сочинении нужно будет "экспертно анализировать" суть деятельности, т.е. правильно представить себе порядок работ. А чтобы получить из "житейски" правильного порядка (где, как правило, отражены только ближайшие предшественники работы) сеть работ (где для каждой работы найдены все её предшественники), вводят те же фиктивные работы (пример можно найти у Романовского в п/р 8.9). По-моему, перекликается с построением программ на Обероне, где запрещён циклический импорт модулей; в результате для разрешения ссылок модулей друг на друга вводятся дополнительные модули (показано у Свердлова для О-компилятора в Прил.3).Б) Всё-таки не хотелось бы неоправданных изломов линий, и потому лучше как сделано Геннадием в Ты-среде - узлы протяжены "по месту".
В) Символика ГОСТ всё-таки тоже не идеал (хотя по логике "слепышей" то, что надо). Это следует из А) - условия старта/финиша нужно записывать в соответствующих узлах, что и предложено в МШ-алфавите, уточнённом
в этом сообщении, исходя из сетевой интерпретации. А независимые действия (процессы) всё равно зависят от общих ресурсов (ограниченных), которые нужно учесть ещё до алгоритмизации (в частности, чтобы сразу применить к схеме методы сетевого планирования и алгоритмизовать уже оптимизированную).
Имеем в виду, что схема с возможным расщеплением рабочей точки - это не алгоритм; её ещё предстоит алгоритмизовать (если рабочая точка реально расщепляется - то принцип впервые на форуме описан, по-моему,
здесь и
здесь (для разных предлагавшихся схем)). Поэтому на ней уже должны содержаться данные для этой алгоритмизации (параметры условий старта/финиша). Причём,
IMHO, получается единообразно и для случая "работает один" - условия переносятся в конструкцию ветвления, и для случая "работает много" - общие условия становятся частью алгоритмов узлов, а частные - возможно, входят в алгоритмы ветвей (Н-шампуров).
Детали алгоритмизации такой схемы, считаю, должны содержаться в её методике.
Итак, от узлов-линий, считаю, надо уходить. Что полагаю правильным в ГОСТе (абстрагированном от текста) - ограничение функций узлов только расщеплением/сбором. Как и в ДРАКОНе, содержание примитива и силуэта д.б. одинаково (если "примитивизируем" силуэт, должен без всяких доп. манипуляций получиться исходный примитив, только с разрешёнными БП, которые можно сохранить или устранить - во втором случае, естественно, снова возникают пересечения линий, если они были в исходном примитиве).
А всё-таки что-то в РК-предложении, наверное, есть... но чтобы окончательно разобраться - нужна методика применения, которая бы охватывала: 1) декомпозицию РК-схем; 2) их алгоритмизацию. Только примеров недостаточно - нужна целостная картина...P.S. Вот так могут выглядеть события через МШ-узлы (добавлены поля приоритета работ, т.е. Н-шампуров). Здесь также убран общий контур узла - несколько похоже на НПД-иконы

Вложение:
Комментарий к файлу: Узлы как события см. Лист 2.
A3L МШ-схемы - алфавит (нов).odg [27.17 КБ]
Скачиваний: 567
Вложение:
Комментарий к файлу: Образ Листа 2.
A3L_МШ-узлы_как_события_сети_работ.djvu [32.38 КБ]
Скачиваний: 538
Здесь изменены индексы МШ-узлов - в сетевой интерпретации достаточно топологически упорядоченного индекса события и типа узла в его составе; индексы же Н-шампуров (НПД; служат как корень индекса Н-БП, разбивающих Н-шампур в МШ-силуэте) вводятся независимо и указываются при шампурах (ручное указание уже реализовано у Геннадия).