DRAKON.SU

Текущее время: Пятница, 26 Апрель, 2024 07:11

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




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Суббота, 14 Август, 2010 21:07 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Рэйлвэй Каген писал(а):
Не совсем редактор. В основном, отрабатывалась модель пользователского интерфейса. Пока без привязки к конкретному визуальному синтаксису.

Так, может, всё-таки опенсорс? Возьмётесь руководить? :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 15 Август, 2010 08:59 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Нет. Неинтересно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 20 Август, 2010 04:50 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Эдуард Ильченко в viewtopic.php?p=50496#p50496 писал(а):
Т.е. развилки уйдут с главного маршрута вправо на побочные вертикали? Соответственно, изменится посыл схемы: именно эти развилки важны. Да и в редакторе, если после каждой пересадки лианы маршруты будут подвергаться рокировке проектировщику легче не станет.

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

Эдуард Ильченко в viewtopic.php?p=50497#p50497 писал(а):
В общем случае, наверное, не всегда можно заменить некоторую группу развилок на переключатель.
А даже если и можно, переключатель массивнее будет. А места и так не хватает.

Вопрос интересный :) А ответить можно точно. Нельзя заменить, если развилки в сложном ветвлении разделены другими иконами, т.е. не образуют дерево "шапочного разбора". В изображённом же Вами случае заменить можно. Для этого, как уже говорил, в лианной конструкции для начала надо провести разъединение, чтобы и точки слияния собрать в дерево "подвального сбора". Затем, если мы хотим сохранить инверсный шампур как главный, нужно заново сформулировать условия ветвления (подставляемые как текст вариантов переключателя). Так, если в Вашей схеме по шампуру все ответы "да", то для главной вертикали (шампура сочиняемого переключателя; в Вашем случае будет ненагруженным) получится условие вида "<Вопрос1> И <Вопрос2> И <Вопрос3>"; для следующей - "<Вопрос1> И НЕ <Вопрос2>", и т.д. (номера развилок, само собой, возрастают по шампуру). Это вытекает из того, что сложные развилки визуализируют (алгоритмизуют) вычисление булевых функций, что описано в /Паронджанов, 2001, Гл.9/. Ну и подставляем шампур-блоки на свои вертикали.
Повторяющиеся как результат разъединения куски можем оформить как визуалы-вставки. Условия вариантов получатся громоздкими, но когда они примут вид логвыров, их в ряде случаев, очевидно, можно минимизировать по правилам алгебры логики. Вот.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 21 Август, 2010 11:54 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Драконограф писал(а):
Эдуард Ильченко в viewtopic.php?p=50497#p50497 писал(а):
В общем случае, наверное, не всегда можно заменить некоторую группу развилок на переключатель.

В изображённом же Вами случае заменить можно.
...
Так, если в Вашей схеме по шампуру все ответы "да", то для главной вертикали (шампура сочиняемого переключателя; в Вашем случае будет ненагруженным) получится условие вида "<Вопрос1> И <Вопрос2> И <Вопрос3>"; для следующей - "<Вопрос1> И НЕ <Вопрос2>", и т.д. (номера развилок, само собой, возрастают по шампуру).
...
Условия вариантов получатся громоздкими, но когда они примут вид логвыров, их в ряде случаев, очевидно, можно минимизировать по правилам алгебры логики.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 23 Август, 2010 04:51 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Ильченко Эдуард писал(а):
Драконограф писал(а):
Эдуард Ильченко в viewtopic.php?p=50497#p50497 писал(а):
В общем случае, наверное, не всегда можно заменить некоторую группу развилок на переключатель.

В изображённом же Вами случае заменить можно.
...
Так, если в Вашей схеме по шампуру все ответы "да", то для главной вертикали (шампура сочиняемого переключателя; в Вашем случае будет ненагруженным) получится условие вида "<Вопрос1> И <Вопрос2> И <Вопрос3>"; для следующей - "<Вопрос1> И НЕ <Вопрос2>", и т.д. (номера развилок, само собой, возрастают по шампуру).
...
Условия вариантов получатся громоздкими, но когда они примут вид логвыров, их в ряде случаев, очевидно, можно минимизировать по правилам алгебры логики.

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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 23 Август, 2010 19:55 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Драконограф писал(а):
...речь идёт именно о замене матрёшки развилок на переключатель.

Ильченко Эдуард писал(а):
В схеме на Рис.1 могут исполниться все ветви (жёлтая, синия, оранжевая), а может не исполниться ни одна.
В переключателе же исполнится одна, без дополнительных построений, а это уже совсем другой алгоритм.

Что-то тяжело даются мне рокировки : )
Не могли бы Вы графически изобразить переключатель эквивалентный схеме на Рис. 1?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 24 Август, 2010 05:11 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Ильченко Эдуард в viewtopic.php?p=50700#p50700 писал(а):
В схеме на Рис.1 могут исполниться все ветви (жёлтая, синия, оранжевая), а может не исполниться ни одна.
В переключателе же исполнится одна, без дополнительных построений, а это уже совсем другой алгоритм.

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

Ильченко Эдуард в viewtopic.php?p=50700#p50700 писал(а):
Что-то тяжело даются мне рокировки : )
Не могли бы Вы графически изобразить переключатель эквивалентный схеме на Рис. 1?

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

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

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

Ваша схема после пересадок "подгадалась" так, что ни один маршрут после первого ветвления не проходит больше через развилки; в этом случае не надо перемещать развилки, и ограничение неактуально (потому я его не обсуждал до этого). Однако на схему до пересадок (Ваш Рис.1) это ограничение распространяется; поэтому без конкретного текста икон невозможно определить допустимость её преобразования в переключатель (не говоря уже о том, чтобы изобразить результат такого преобразования).
По сути это то же, о чём говорил неоднократно, напр., Илья Ермаков - нельзя сочинять алгоритм/программу, не опираясь на математическую логику, не анализируя цепочки состояний, сменяющихся в процессе исполнения. Потому и я говорю о логическом проектировании.

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


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

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


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

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


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

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