DRAKON.SU

Текущее время: Вторник, 19 Март, 2024 12:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 107 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
СообщениеДобавлено: Четверг, 07 Ноябрь, 2019 20:27 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5844
Откуда: Москва
PSV100 писал(а):
Рассмотрим ещё один схожий алгоритм. Случайно наткнулся на схему про Карлсона...

Вложение:
Рис. 81 карлсон досрочн.png
Рис. 81 карлсон досрочн.png [ 163.5 КБ | Просмотров: 4303 ]

И, очевидно, из-за главного шампура (с неудачным исходом) на данной схеме нарушен картографический принцип (или не нарушен?...

Нет, не нарушен. И вот почему.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Ноябрь, 2019 09:56 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Дмитрий Бардынин писал(а):
"оптимум" Исполнителя тоже зависит от контекста
Об этом и речь.
Цитата:
принцип оптимизации - укажите явно в комментарии к диаграмме.
Именно.
Правило без этих необходимых дополнений не имеет смысла. (А дополнения появились исключительно под давлением, когда к стенке припёрли. Что позицию всё ж таки характеризует, не правда ли? ;) )

Цитата:
если есть обвинитель, есть место и защитнику.
Да нет обвинителей-то. Есть профессионалы, не принимающие аргументацию рекламного характера, и есть узкий круг фанатиков, которые такую аргументацию толкают без малейшего намёка на критичность.
А это нельзя считать нормальным.

Цитата:
Ваши аргументы, как мне кажется, пока довольно субъективны и персонализированы
У меня они хотя бы есть. А у вас только догмы.

Цитата:
Я вижу, в первую очередь, в картографическом подходе важный момент: это основа для начала размышления, точка отсчета и мера оценки
В ряде случаев в этом действительно есть смысл.
Но нельзя обобщать!

Цитата:
простейшем правиле: самый легкий/оптимальный/выигрышный/полезный/продуктивный путь - слева (выбрать признак из контекста)
Повторю, это есть метаинформация, иногда (но не всегда!) полезная с когнитивной точки зрения.
Однако обобщать её и выносить в алгоритмический слой именно как правило - неадекватно.

Ещё про трудность формализации - вот прямо только что очередные уточнения-дополнения:
Владимир Паронджанов писал(а):
Правило "Чем правее, тем хуже" относится только к схеме без циклов. Если же есть цикл, то ...
И подобным уточнениям числа не будет при таком подходе.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Ноябрь, 2019 18:08 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Владимир Паронджанов писал(а):
Вы отчасти правы. Но только отчасти.
Вы указали на случай, когда правило "чем правее, тем хуже" не работает.
Вы неявно предложили (для данного конкретного случая) заменить правило "чем правее, тем хуже" на другое правило.

Но это вовсе не значит, что картографический принцип не работает, и что имеет место "кричащее нарушение".

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

Почему правило не относится к циклам и почему возникают какие-то приоритеты? В таком случае фундаментальный картографический принцип неясен и противоречивый, что ли...

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

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

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

Если цикл с предусловием ("пока ...") для соответствия с правилом хозяйки может быть оформлен только в целом как ветка или ветки (веточный цикл), непосредственно надетый на шампур, а хочется как цикл со стрелкой, то, видимо, вводится иное строгое правило -- можно неявно "временно" изменить исходное правило хозяйки или ввести иное строгое правило, точечно. Почему? Ведь точечно невозможно.
Локализацию критериев можно понять во вложенной области, например, в циклах вида "для", конструкции "выбор". Но почему в разрезе примитива/ветки какие-то "вопросы" или развилки должны иметь некие исключения из строгого порядка и приоритеты? Почему допускаются какие-то особые маршруты? Для чего тогда рисовать "жирную линию" для всего шампура?
Ведь все развилки в ветке организовывают её упорядоченность, и циклы в том числе. "Вопросы" как условия циклов также упорядочивают маршруты, как после циклов, так и внутри (в том числе и "досрочные выходы").

Если в фундаментальном принципе "если постараться, порядок всегда можно навести" часть "если постараться" заключается в подмене критериев ("временно", и неявно) -- ведь тогда карта процесса ложна.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Ноябрь, 2019 18:13 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Дмитрий Бардынин писал(а):
Возьмем, к примеру, экипаж неотложки: его оптимум - эффективность диагностики, и сохранение здоровья и жизни пациента. Чем оптимальнее решается эта задача - тем лучше. В алгоритмы это прекрасно вписывается, и эргономика не страдает. Откуда взялись лишние сущности?

Если не ошибаюсь, как раз в медицинских алгоритмах зародилась фишка даже выделять главные маршруты "жирным".

Вероятно, такова предметка, где в алгоритмах "в лёгкую" сортируются "вопросы" и комплексы из них как "лестницы" и "мачты" по маршрутам, с вкраплением совместных действий (блоки параллельных линий, но без разрыва маршрутов по силуэту -- иначе совсем иная карта процесса). Циклы, скорее всего, преимущественно в стиле "выполнять до" с возможностью быть одетым на шампур (поскольку алгоритм как "медицинская процедура" направлен на ликвидацию уже существующей проблемы, т.е. в начале всегда есть повод что-то делать), а-ля:
Вложение:
med_loop.png
med_loop.png [ 17.91 КБ | Просмотров: 4284 ]

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

В общем, картографичность в действии, достойная альтернатива для чек-листов, например.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Ноябрь, 2019 18:20 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Дмитрий Бардынин писал(а):
Например, понятно, что принцип "правее - хуже" довольно груб. Но он дает возможность настроиться искать главный путь слева, не отвлекаясь на побочные ветки. Это дисциплинирует взгляд, служит неким сортировщиком потенций.
...
И если в правилах написания мы учитываем "оптимальность", то картографичность соблюдается, и эргономичность неизбежно остается на уровне.
...
Возьмем, к примеру, ...

Предлагаю теперь вместо медицинских алгоритмов вновь обратить взор к исходным примерам этой темы.

Возьмём уже "заезженный" пример со всех сторон насчёт TreeView, как уже некий "референсный" материал насчёт представления "деревьев решений":
https://forum.drakon.su/viewtopic.php?f=228&t=6666#p103696
Изображение

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

В любом случае можем воспользоваться всё тем же универсальным критерием -- чем правее, тем хуже. Алгоритм есть некий обработчик событий, его задача как-то среагировать на возникающие события и завершить свою работу (затем вновь от него могут что-то потребовать и т.д.). Основная работа обработчика события -- ничего не делать, если ни о чём не просят. Соответственно необходимо выделить условно пустые или лёгкие маршруты. На исходной схеме маршруты без действий, как наиболее условно благоприятные, скрыты "основательно" (кроме, разве что "event.button === 0 -- нет"). Может возникнуть неверное впечатление, что обработчик всегда "тяжёлый", и очень накладно предоставлять ему возможность работать. Исправим этот обманчивый эффект:
Вложение:
20191107135403.png
20191107135403.png [ 42.89 КБ | Просмотров: 4284 ]

Ну вот, теперь картографичность должна быть "как на ладони" -- все условно "бездейственные" маршруты расположены левее, первый главный маршрут -- самый лёгкий. Соответственно и эргономичность должна быть восстановлена автоматически, наконец-то.

Альтернативный взгляд. Силуэт ("главное оружие" ДРАКОН-а) возник из-за необходимости снять возникающее пересечение линий. Такие ветки "хозяйке" не нужны, они не соответствуют требуемой предметной осмысленности, поэтому "в знак протеста" оставлены с наименованием по умолчанию, определенные редактором (заодно это элементарный пример -- легко ли ориентироваться в силуэте без содержательных обозначений). Следует отметить, что именно наличие исходной схемы в виде примитива (с "грубыми" неструктурными связями между условными выражениями) без силуэта подсказывает, что возможен вариант схемы "всё в одном". В противном случае о таком варианте ещё нужно уж очень постараться догадаться (представляю, сколько времени потратил Степан на "метод тыка").
И силуэт "не спас" от дублирования, в данном случае уже три условия " machine.state === "expanding" ". Однако, на всякий случай, применено важное правило "семейного сходства" -- элементы сведены смежно друг к другу, и они выровнены по горизонтали.

Так что алгоритм соответствует всем (ну, вероятно, почти, т.к. о всех правилах не имею представления в полном масштабе) критериям "красивого алгоритма" (критерии определены в публикациях по ссылкам выше в теме).

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

Итого, есть хоть какая-то почва сопоставить алгоритмы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Ноябрь, 2019 18:27 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Дмитрий Бардынин писал(а):
Например, как можно одновременно говорить "трудно формализуемо" о простейшем правиле: самый легкий/оптимальный/выигрышный/полезный/продуктивный путь - слева (выбрать признак из контекста). Наоборот, это правило дает широчайший спектр для формализации, для различных стратегий. Сомневаетесь, что пользователи поймут принцип оптимизации - укажите явно в комментарии к диаграмме.

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

Ранее в теме эта же задача про "дерево решений" была в таком виде:
https://forum.drakon.su/viewtopic.php?f=228&t=6666&start=60#p103984
Изображение

Здесь маршруты (точнее, там структуры) с критерием "оптимальности" (ничего неделания) выделены через явные связи (внизу в данном случае, прочие структуры также упорядочены согласно предикатам событий). Конечно же, в случае чего, если схема будет длиннющей колбасой, её потребуется порезать на куски, и явные линии отношений обрежутся. Однако, процессом нарезки управляю я, хозяйка с предметной осмысленностью. В результате будут удобные куски, последовательно упорядоченные, как в "горизонтальном ДРАКОН-е" -- InteloGraf:
https://forum.drakon.su/viewtopic.php?f=62&t=4060
http://intelograf.narod.ru/

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

В ДРАКОН-схеме выше, в последнем примере, нарезкой колбасы управляла не хозяйка, а "главное оружие" -- силуэт, он "наглядно" спасает от пересечения линий. В результате у хозяйки не хватило возможности обозначить маршруты в первой ветке в соответствие желаемому критерию. И ранее целенаправленно не было указано, что на схеме, всё же, "скрыт" один из "лёгких" маршрутов: "item.lastClick -- нет -- machine.state === "expanding" -- да -- Branch 3 на выход", и в итоге ветки не ранжированы согласно правилу хозяйки. Соответственно, картографический принцип нарушен, причём "подло" и незаметно, подвергая риску главный принцип ДРАКОН-а -- быть почти безошибочным языком.

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

И некоторые прочие проблемы гранулярности внутри ветки были уже затронуты ранее.
Дмитрий Бардынин писал(а):
Например, понятно, что принцип "правее - хуже" довольно груб... Я бы переформулировал исходное определение ...

Очевидно, что ключевое в проблематике не в критериях ранжирования, они всегда представимы как частично упорядоченное множество с оператором "<=" (в общем случае и с равенством).
Проблематика в системе координат для карт процесса.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Ноябрь, 2019 18:32 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Alexey_Donskoy писал(а):
PSV100 писал(а):
наткнулся на схему про Карлсона... И, очевидно, из-за главного шампура (с неудачным исходом) на данной схеме нарушен картографический принцип.

Там прежде всего нарушена когнитивная эргономика (необходимо анализировать направления да/нет).
Вот то же самое, только оптимально с этой точки зрения (направление "да" строго фиксировано).
И рядом ТОЧНО ТАКАЯ ЖЕ схема линейного поиска!
То есть мы видим, что это по сути один и тот же алгоритм

В целом, в задаче про Карлсона, всё же, весь процесс может быть завершён "удовлетворительно" и при "отсутствии денег". Но предметная суть не важна, а так да, там схожая архитектура циклов.
Alexey_Donskoy писал(а):
У программиста может возникнуть некоторая трудность, потому что цикл оформлен несколько непривычно (кто-то закричит про инверсию условия, мол, проще проверять условие окончания поиска, а не продолжения).

Ранее в теме уже была разобрана проблематика:
https://forum.drakon.su/viewtopic.php?f=228&t=6666&start=60#p103940

В общем-то, в самом деле, напряг возникает именно при "досрочном продолжении" (CHECK внутри LOOP по ссылке выше).

В целом, та же Обероновская методика выглядит методологически корректно. Циклы с пред/постусловием подразумевают "защитные выражения" для всего циклического процесса. Какие-то дополнительные досрочные выходы (и продолжения) противоречат самой сути этих предикатов (кроме прочих возможных проблем). Поэтому exit есть только внутри "loop...end", где нет "защиты" всей циклической структуры, и ты сам ищешь "выход" из неё. Тем же Р-схемам "свезло" (точнее, в те времена изначально принимали решения по методике моделирования) в этом плане (где, как бы, "да" всегда сверху дуг). Внешняя форма циклических структур может быть разной (под двойной дугой или нет), что уже первично предполагает семантику конструкции (сразу располагает к вниманию -- есть собственные выходы или нет). И "самостоятельное блуждание" по состояниям-вершинам (loop...end) рисуют "в явном виде", в отличие от текстового формализма "exit" всегда выровнен вправо к границе (в конец) всей структуры (дуги содержат "*" (структурный переход) как окончание текущей структуры на манер ингибиторных дуг сетей Петри или операции "гашения" по методике Закревского, где-то здесь на форуме представлена).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 107 ]  На страницу Пред.  1, 2, 3, 4, 5, 6

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB