DRAKON.SU
https://forum.drakon.su/

Преобразование графов
https://forum.drakon.su/viewtopic.php?f=148&t=3184
Страница 2 из 5

Автор:  Владислав Жаринов [ Воскресенье, 23 Январь, 2011 23:12 ]
Заголовок сообщения:  Re: Преобразование графов

Владимир Паронджанов писал(а):
Глава 30

РЕКОМЕНДАЦИИ ПО ИСПОЛЬЗОВАНИЮ АЛГОРИТМИЧЕСКИХ
СТРУКТУР «СИЛУЭТ» И «ПРИМИТИВ»

§1. ЧТО ЛУЧШЕ: СИЛУЭТ ИЛИ ПРИМИТИВ?


Предположим, вы собираетесь начертить дракон-схему. Какую структуру
лучше выбрать: силуэт или примитив?

§2. ГОЛОВНОЙ АЛГОРИТМ
И ДВА МЕТОДА СОЗДАНИЯ АЛГОРИТМОВ


Головной алгоритм — это алгоритм самого верхнего уровня на лестнице
декомпозиции. Головной алгоритм может содержать вставки (вызываемые
процедуры). Но сам он не может быть вставкой для алгоритма более
высокого уровня.

Головной алгоритм — это всегда силуэт. Он не может быть примитивом.

Для создания головного алгоритма используют два метода, которые могут
дополнять друг друга:

        • метод наглядной декомпозиции;
        • метод многостраничного силуэта.

...

1. Чтобы создать большой алгоритм, следует использовать систему силуэтов.

2. Головной алгоритм большой схемы обязательно должен быть силуэтом.

3. Алгоритм надо рассматривать как последовательную декомпозицию
силуэтов.В том смысле, что каждый силуэт может содержать много
вставок, каждая из которых раскрывается как силуэт.

...

2. Примитив применяют крайне редко, скорее как исключение.

3. Тем не менее, полностью отказываться от понятия «примитив» не следует
по двум причинам.

4. Первая причина — педагогическая. Примитив — это прообраз (зародыш)
ветки. Основные понятия и правила ДРАКОНа удобно объяснять на самой
простой модели. То есть на примитиве. И только после этого переходить
к рассказу о силуэте.

...

Эта глава взята из моей пока еще не законченной книги.

Но примерно такой же (но более короткий) материал есть в книге "Дружелюбные алгоритмы,
понятные каждому" М.: ДМК-пресс, 2010.
См. глава 20. стр. 321--323.
Тут есть некоторые вопросы (возможно, это для другой темы):
1) Алгопроцесс, подвергшийся декомпозиции (подстановкам), выше называется по-разному - то "алгоритм", то "большая схема". Нужно определиться с терминологией. При этом имея в виду, что после подстановки уже некорректно говорить об алгоритме - возникает система алгоритмов, связанных отношением вызова, как показано здесь. Я называю эту систему "дракон-моделью" - очевидно, создатель техноязыка может дать свой термин как предполагаемый окончательный.
2) Стоит для употребления примитивов и силуэтов разграничить формальные и эргономические ограничения. Когда говорится, что визуал такого-то рода д.б. только силуэтом - надо оговорить, что это по эргономическим соображениям - а формально (по шампур-методу) ограничений на выбор диоформы нет.
3) Если примитив - это прообраз ветки - то, возможно, стоит выбрать для его границ вершины, вводимые здесь для БП с возвратом. В них объединяется "веточность" с "заголовочностью" (включая формальные параметры) и со "вставочностью".

Автор:  Ильченко Эдуард [ Воскресенье, 20 Февраль, 2011 22:51 ]
Заголовок сообщения:  Re: Преобразование графов

Alexey_Donskoy писал(а):
Вот предлагаю схему алгоритма для обсуждения.
...
Есть алогритм (слева), в котором ветка развилки q3 должна идти на конец (после действия s5).
Естественно, редактор не позволяет сделать такой финт. Но можно преобразовать блок-схему, тогда это станет возможным (справа):
Вложение:
q2.PNG
q2.PNG [ 12.46 КБ | Просмотров: 18286 ]

1) При таком преобразовании нарушается правило "главного шампура". Как быть?

Маршрут q3.Нет можно вывести без пересечений "кроссовером" из переключателя.
Вложение:
qqq.png
qqq.png [ 30 КБ | Просмотров: 18286 ]

Автор:  Alexey_Donskoy [ Воскресенье, 20 Февраль, 2011 23:04 ]
Заголовок сообщения:  Re: Преобразование графов

Ильченко Эдуард писал(а):
Маршрут q3.Нет можно вывести без пересечений "кроссовером" из переключателя.
На самом деле пересечение не устранено. Оно просто спрятано в гораздо более сложной конструкции - аналоге общей шины.
И констркуция эта, имхо, эргономики не добавляет, а, напротив, всё сильно усложняет. Хотя, конечно, элегантно решает проблему пересечения - ну так шина она и есть шина, даже если записана на Драконе ;)

Автор:  Владимир Паронджанов [ Понедельник, 21 Февраль, 2011 12:57 ]
Заголовок сообщения:  Re: Преобразование графов

Alexey_Donskoy писал(а):
На самом деле пересечение не устранено. Оно просто спрятано в гораздо более сложной конструкции - аналоге общей шины.


Уважаемый Алексей Николаевич!

Благодарю Вас за то, что Вы открыли эту тему. Она позволяет обменяться мнениями и более четко выявить наши разногласия.

В чем суть разногласий? Я не могу согласиться с Вашим утвеждением о наличии в схеме Ильченко пересечений.

Где пересечение? Я его глазами не вижу. Если пересечение нельзя увидеть глазами, следовательно, оно не существует.

Мне кажется, что в основе наших разногласий лежат разные определения понятий.

Мы с Вами используем ПРИНЦИПИАЛЬНО РАЗНЫЕ понятия. В том смысле, что понятие "пересечение" Вы и я определяем по разному.

Для меня ПЕРЕСЕЧЕНИЕ - это пересечение линий, которое можно увидеть глазами.

Для Вас ПЕРЕСЕЧЕНИЕ - это нечто иное. Это некоторая мысленная модель,
которая находится у Вас в голове. И Вы, разумеется, вправе строить Вашу
мысленную модель по собственному усмотрению.

В данном случае слово эргономика (когнитивная эргономика) относится исключительно к зрительной сцене (дракон-схеме),
которую человек воспринимает с помощью зрительного восприятия.
Дракон-схема это изображение на экране или на бумаге. Это вещь объективная.

Слово эргономика не относится к мысленным моделям, находящимся в мозгу.
Мысленная модель - вещь субъективная. И эргономика тут ни при чем.

Вывод. Я согласен с Эдуардом Ильченко. И не согласен с Алексеем Донским.

Автор:  Alexey_Donskoy [ Понедельник, 21 Февраль, 2011 22:42 ]
Заголовок сообщения:  Re: Преобразование графов

Вложение:
qqq.png
qqq.png [ 63.13 КБ | Просмотров: 18249 ]


Владимир Паронджанов писал(а):
Для меня ПЕРЕСЕЧЕНИЕ - это пересечение линий, которое можно увидеть глазами.
Так посмотрите ещё раз. Вы видите СЛИЯНИЕ.

А СЛИЯНИЕ ХУЖЕ ПЕРЕСЕЧЕНИЯ!

Почему слияние хуже пересечения?

Потому что в пересечении глаз легко сохраняет движение по маршруту.

А в слиянии потом неизбежно приходится в той или иной форме использовать специальные метки для продолжения маршрута.

И использование этих меток - есть внесение дополнительной когнитивной сложности в схему!

Что мы имеем в результате? Мы заменили простейшую схему очень сложной для восприятия.
И всё только из-за того, что первая схема не удовлетворяет искусственным ограничениям Дракона!

Вывод: ограничение на пересечения мешает строить когнитивно эргономичные схемы.

Следовательно, ограничение надо отменить!

Автор:  Евгений Темиргалеев [ Понедельник, 21 Февраль, 2011 23:21 ]
Заголовок сообщения:  Re: Преобразование графов

Вынесите дополнительную сущность вниз. Или в отдельную ветку силуэта.

Типа
1) Принять решение чего делать: q := q1 | q2 | q3
2) Выполнить решение

Автор:  Alexey_Donskoy [ Понедельник, 21 Февраль, 2011 23:30 ]
Заголовок сообщения:  Re: Преобразование графов

Евгений Темиргалеев писал(а):
Вынесите дополнительную сущность вниз. Или в отдельную ветку силуэта.
Усложнение. Неэлегантно. Неэргономично. Имхо.

Автор:  Ильченко Эдуард [ Вторник, 22 Февраль, 2011 00:52 ]
Заголовок сообщения:  Re: Преобразование графов

Для полноты картины
Вложение:
qqq3.png
qqq3.png [ 90.99 КБ | Просмотров: 18236 ]

Автор:  Alexey_Donskoy [ Вторник, 22 Февраль, 2011 08:49 ]
Заголовок сообщения:  Re: Преобразование графов

Ильченко Эдуард писал(а):
Для полноты картины
Для полноты картины неплохо было бы ещё оценить эргономичность, можно даже количественно, есть же метрики...

- Вариант 2 (развёртка на плоскости) стал возможен исключительно потому, что пример слишком прост. Достаточно ещё одной гадкой развилки, чтобы зарубить такой подход на корню.
- Вариант 3 с "общей шиной" (с использованием "переключателя") без поллитра уже не катит - эргономичность на порядок снижается по сравнению с первым (с пересечением).
- Вариант 4 (силуэт) вообще ни в какие ворота не лезет (ещё на порядок хуже).

Не, ну конечно, можно натренироваться на всё, что угодно, и субъективно выдавать эту натренированность за эргономику... Вы за такой очковтирательский вариант - исключительно ради сохранения статус кво?!

Автор:  Axcel [ Вторник, 22 Февраль, 2011 09:38 ]
Заголовок сообщения:  Re: Преобразование графов

Alexey_Donskoy писал(а):
...
Не, ну конечно, можно натренироваться на всё, что угодно, и субъективно выдавать эту натренированность за эргономику...

Мне кажется Вы именно это и делаете, особенности Вашего субъективного восприятия выдаете за эргономику. Но возможно это вообще глобальная проблема эргономики, в частности для меня (и Петра Алмазова) эргономическое представление - псевдокод. А если говорить о Драконе, то лично у меня пересечения вызывают в буквальном смысле отвращение.

Автор:  Alexey_Donskoy [ Вторник, 22 Февраль, 2011 09:57 ]
Заголовок сообщения:  Re: Преобразование графов

Axcel писал(а):
Мне кажется Вы именно это и делаете, особенности Вашего субъективного восприятия выдаете за эргономику. Но возможно это вообще глобальная проблема эргономики, в частности для меня (и Петра Алмазова) эргономическое представление - псевдокод.
Давайте оставим сравнение текста и графики - это отдельный вопрос. И сосредоточимся на конкретном визуальном представлении.
Для того, чтобы не было глобальной проблемы, придумываются метрики.
Так, если в радиоканале частотная модуляция, выше несущей частоты не прыгнешь, она ограничивает.
И здесь - можно посчитать, в частности, движения глаз вдоль линии маршрута.
А также затраты на распознавание образов и на сознательную интерпретацию связанных текстов.

В варианте 1 на пути встречается лишь одно препятствие - пересечение, и оно легко идентифицируется "на автомате", без осознания. Положим 1 балл сложности на это.

В 3 случае (слияние с последующим разделением через "переключатель") имеем:
- дополнительные визуальные объекты на пути (слияние, переключатель, ветки выбора переключателя);
- объекты, требующие чтения и осознанной интерпретации (текст переключателя и текст каждой ветки);
- заметим, что в крайнем случае (а именно он нас интересует) потребуется просмотр всех веток (наша - последняя);
- ещё заметим, что структура уже достаточно сложна, и, скорее всего, потребуется минимум один возврат для подтверждения (надёжности распознавания, самопроверки и т.п.). Стало быть, раза в полтора-два минимум итог увеличится.
Далее, положим 1 балл на распознавание слияния, 2 балла на распознавание переключателя и каждой ветки.
Положим 10 баллов на интерпретацию текста в каждом объекте.
Итого имеем: (1+1+3*1 + 10 + 3*10)*1.5 = 67.5

Можно обсуждать коэффициенты метрики, но таки принципиально против не попрёшь. Усложнение больше, чем на порядок.

Автор:  Илья Ермаков [ Вторник, 22 Февраль, 2011 11:05 ]
Заголовок сообщения:  Re: Преобразование графов

Ну, я однозначно не за, и не против пересечений, как уже говорил. Я думаю.
Так вот, смотрю на пересечения - отследить-то проще ход по конкретному пути от начала к концу. Но в целом схема смотрится подозрительно (возникает какое-то равноправие путей, откуда и пересечения). Ощущение - "что-то тут не так, почему всё такое симметрично-равноправное".

Автор:  Евгений Темиргалеев [ Вторник, 22 Февраль, 2011 11:22 ]
Заголовок сообщения:  Re: Преобразование графов

В моем предложении ключевой момент был в разделении на ДВА этапа. Типа такого
Вложение:
Снимок.png
Снимок.png [ 7.81 КБ | Просмотров: 18211 ]
Вложение:
Снимок-1.png
Снимок-1.png [ 9.07 КБ | Просмотров: 18212 ]

Автор:  Alexey_Donskoy [ Вторник, 22 Февраль, 2011 11:52 ]
Заголовок сообщения:  Re: Преобразование графов

Евгений Темиргалеев писал(а):
В моем предложении ключевой момент был в разделении на ДВА этапа.
Понятно, но это как раз и даёт необходимость повторения разветвлений. То есть тоже усложнение почти на порядок.

Илья Ермаков писал(а):
Но в целом схема смотрится подозрительно (возникает какое-то равноправие путей, откуда и пересечения)
Можно списать на неудачную компоновку примера. Реальные алгоритмы сложнее и интереснее.

А вот тот момент, чтобы крутить туда-сюда, теряя пути, только для того, чтобы разложить на плоскости без пересечений... Я честно потратил почти неделю на свои алгоритмы, так что опыт есть, и сугубо отрицательный...

Автор:  Axcel [ Вторник, 22 Февраль, 2011 13:02 ]
Заголовок сообщения:  Re: Преобразование графов

Пересечение это "облом", "короткое замыкание", "разрушение целостности", "когнитивный диссонанс" и все коэффициенты летят к черту, регулярность исчезла и метрики больше нет, вернее она становится трехмерной (усложнение на порядок), шина в этом случае "честный подход".

Автор:  Alexey_Donskoy [ Вторник, 22 Февраль, 2011 13:24 ]
Заголовок сообщения:  Re: Преобразование графов

Axcel писал(а):
Пересечение это "облом", "короткое замыкание", "разрушение целостности", "когнитивный диссонанс" и все коэффициенты летят к черту, регулярность исчезла и метрики больше нет, вернее она становится трехмерной (усложнение на порядок), шина в этом случае "честный подход".
Ещё раз.

Метрика алгоритма не зависит от способа представления.

Шина - топологически не устраняет пересечения, не изменяет метрику.
Шина - вводит много дополнительных объектов и когнитивных действий.
Шина - нарушает целостность на порядок более, чем любое пересечение.
Шина - на практике сопоставима с декомпозицией на отдельные листы с кросс-ссылками. Только чуть удобнее.
Шина - даёт "когнитивный диссонанс", потому что даже перечисление входов-выходов, а тем более их сопоставление и полнота, совершенно неочевидны. И я ещё слишком оптимистически оценил общее усложнение за счёт повторов-возвратов в 1.5 раза.
Наконец, шина - это отнюдь не честный подход, а как раз (в данном случае) достаточно гнусное упрятывание проблемы за нагромождением лишних сущностей.

В то время как отображение произвольного графа на плоскость - именно искусственная, достаточно надуманная операция. У неё есть оправдания, но они слабоваты.

А моё имхо - оно всё-таки подкреплено выше. Хотя бы предварительным анализом.

P.S. Естественно, шина полезна. Потому что много близко расположенных параллельных линий тоже крайне неэргономично. Тогда целесообразно одно зло заменить другим, взвешивая все плюсы-минусы.
Но, опять-таки, это не для рассматриваемого случая.

Автор:  Владислав Жаринов [ Вторник, 22 Февраль, 2011 15:17 ]
Заголовок сообщения:  Re: Преобразование графов

Alexey_Donskoy в viewtopic.php?p=60530#p60530 писал(а):
Вложение:
qqq.png


Владимир Паронджанов писал(а):
Для меня ПЕРЕСЕЧЕНИЕ - это пересечение линий, которое можно увидеть глазами.
Так посмотрите ещё раз. Вы видите СЛИЯНИЕ.
...
Добавлю - фактически в алгоритмически строгой схеме нужна переменная выбора, хранящая результат прохождения вершин Вопрос - тот самый "номер qi" ...

Автор:  Alexey_Donskoy [ Вторник, 22 Февраль, 2011 15:33 ]
Заголовок сообщения:  Re: Преобразование графов

Драконограф писал(а):
Добавлю - фактически в алгоритмически строгой схеме нужна переменная выбора, хранящая результат прохождения вершин Вопрос - тот самый "номер qi" ...
Во-первых, не понял ;)
Во-вторых, когнитивно-эргономичный алгоритм не должен содержать никаких лишних переменных, прямо не относящихся к требуемой функциональности.
Всё, что сверх её - от лукавого (то есть от неадекватности формы представления алгоритма)!

Автор:  Евгений Темиргалеев [ Вторник, 22 Февраль, 2011 15:56 ]
Заголовок сообщения:  Re: Преобразование графов

Alexey_Donskoy писал(а):
Евгений Темиргалеев писал(а):
В моем предложении ключевой момент был в разделении на ДВА этапа.
Понятно, но это как раз и даёт необходимость повторения разветвлений. То есть тоже усложнение почти на порядок.
По-моему не всё столь однозначно.
1) Вопрос, что труднее понять: один сложный алгоритм или (по отдельности) два более простых, пусть и больших в сумме по объёму, нежели первый.
2) Не совсем понятно, как повторение может дать усложнение на порядок, когда это именно повторение. Повторение второй части идёт по стопам первой, уже понятой..

я не буду спорить насчёт того, какие правила построения схем дают более понятный результат --- с пересечениями или без. Плюс Ваши конкретные задачи/алгоритмы мне не известны, т.е. Вам, на месте, т.сказать, виднее.

Но, по-моему, имеет место аналогия между Вашим стремлением уменьшить размер схемы и избежать повторений, с предпочтением текстовых неструктурных конструкций структурным, которое любят обосновывать тем же --- уменьшением объёма текста и исключением повторений...

Автор:  Владислав Жаринов [ Вторник, 22 Февраль, 2011 16:01 ]
Заголовок сообщения:  Re: Преобразование графов

Alexey_Donskoy писал(а):
Драконограф писал(а):
Добавлю - фактически в алгоритмически строгой схеме нужна переменная выбора, хранящая результат прохождения вершин Вопрос - тот самый "номер qi" ...
Во-первых, не понял ;)
Во-вторых, когнитивно-эргономичный алгоритм не должен содержать никаких лишних переменных, прямо не относящихся к требуемой функциональности.
Всё, что сверх её - от лукавого (то есть от неадекватности формы представления алгоритма)!
В иконе Выбор переменная выбора реально д.б. :) ...которая хранит тот самый номер, с которого слились на вход переключателя... ну и присвоить этот номер нужно явно при выходе с каждой развилки на слияние.
Насчёт "во-вторых" согласен - но тут, возможно, без автоматного программирования не обойтись (раз флаги возникают - надо смотреть, не "сложное поведение" ли тому причиной - и не надо ли явно выделить состояния)... Чтобы без переменных - придётся в каждом Варианте заново вычислять то же, что в развилке соответствующей (т.к. между ними ничего не делаем - то будет то же в смысле "да/нет"). Может, ещё как можно :)

Страница 2 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/