DRAKON.SU https://forum.drakon.su/ |
|
АВЛ-дерево. Алгоритм добавления вершины. https://forum.drakon.su/viewtopic.php?f=78&t=4003 |
Страница 1 из 1 |
Автор: | Ильченко Эдуард [ Понедельник, 25 Июнь, 2012 00:24 ] |
Заголовок сообщения: | АВЛ-дерево. Алгоритм добавления вершины. |
Статья в Википедии. В очередной раз посравнивать : ) Вложение: Вложение:
|
Автор: | Владислав Жаринов [ Понедельник, 25 Июнь, 2012 14:49 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Ну, логика процесса нагляднее в схеме, пожалуй. Но цель его - реструктурирование в некоем пространстве данных (адресном). И для её понимания разобраться в порядке действий м.б. мало - Илья уже говорил: viewtopic.php?p=43186#p43186. А это другие типы схем - в частности, как у Лаврова или в проекте Оберон использованы... |
Автор: | TAU [ Понедельник, 25 Июнь, 2012 22:14 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Все очевидно - схема гораздо нагляднее |
Автор: | Axcel [ Вторник, 26 Июнь, 2012 09:13 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
TAU писал(а): Все очевидно - схема гораздо нагляднее На большом экране, так чтобы можно было видеть и схему в целом и техт в квадратиках, да. А вот если приходиться смотреть схему по фрагментам чтобы увидеть текст, то отнюдь, либо, в этом случае, ее надо по другому разбивать. |
Автор: | Info21 [ Вторник, 26 Июнь, 2012 09:28 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Видно, как begin-end замусоривают текст. В значительной степени обессмысливают индентацию. --- Элементарно: здесь просто не хватает одного промежуточного уровня абстракции. Типа псевдокода. Сей факт лучше заметен на диаграмме, если смотреть на неё издалека -- но это по причине плохой структуры кода, испорченной begin-end'ами и неиспользованием белого пространства для визуальногоо разделения частей. |
Автор: | Владислав Жаринов [ Вторник, 26 Июнь, 2012 09:39 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Info21 писал(а): Видно, как begin-end замусоривают текст. Да, конечно.В значительной степени обессмысливают индентацию. Info21 писал(а): Элементарно: Вы имеете в виду, как сделано в "Проекте Оберон" при разборе некоторых команд (скажем, Edit, что можно видеть здесь: viewtopic.php?p=73037#p73037)?здесь просто не хватает одного промежуточного уровня абстракции. Типа псевдокода. А м.б. типа замены и BEGIN-END, и остальных "маршрутных" ключевых слов структурными скобками, как у Прохоренко?.. Да, и возникает вопрос о совмещении разных уровней. А если так: Владислав Жаринов в viewtopic.php?p=72968#p72968 писал(а): ... При оптимизации представления нужно учесть также иерархию по степени формализации. В связи с этим очевидно, что возможны разные варианты построения по порядку прохождения иерархии - "от качественного" или "от программного". В первом случае организуется связно текст наименее формальный, а каждое устрожение (лежащее уровнем ниже по иерархии) представляется как фрагменты, относимые к участкам вышележащего уровня. В втором случае, напротив, связен более формальный текст, а фрагментарны его непосредственное ослабление и формализации иных менее строгих уровней (лежащих выше по иерархии). При реализации такой схемы можно исходить из следующего.
* текст м.б. сформирован как "отчёт" (вьюшка) от граф-базированной записи, причём уровни в отчёт включаются по выбору; * для отражения соответствия "один в один" можно применять "формальное комментирование". Примерно так. Интересны будут другие мнения. И ещё: Info21 писал(а): ... Сей факт лучше заметен на диаграмме, если смотреть на неё издалека -- но это по причине плохой структуры кода, испорченной begin-end'ами и неиспользованием белого пространства для визуальногоо разделения частей. Axcel писал(а): ... если приходиться смотреть схему по фрагментам чтобы увидеть текст, то отнюдь, либо, в этом случае, ее надо по другому разбивать. Возможно, хорошее разбиение должно исходить из логичной структуры кода? Скажем, если организуем как ЦД - то ветки идут в ряд, а содержание ветки - в столбец, как головной процесс на этой схеме?.. Так же можно расположить и чистый текст, и структурированный скобками - только они д.б. двумерными... Тогда цитированное выше о трёх колонках, конечно, относится к каждому столбцу кода. |
Автор: | Роман М. [ Вторник, 26 Июнь, 2012 11:35 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Пример алгоритма на Драконе плох.
|
Автор: | Владислав Жаринов [ Вторник, 26 Июнь, 2012 12:04 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
2. От каких программистских? От записей и указателей? Так тогда мы возвращаемся к качественным илллюстрациям {большого/малого; правого/левого} вращений из ВП-статьи. Они и правда больше дают для понимания решения задачи... |
Автор: | Роман М. [ Вторник, 26 Июнь, 2012 12:10 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Владислав Жаринов писал(а): 2. От каких программистских? От записей и указателей? Так тогда мы возвращаемся к качественным илллюстрациям {большого/малого; правого/левого} вращений из ВП-статьи. Они и правда больше дают для понимания решения задачи... От привязки к конкретной реализации на Паскале.
|
Автор: | Владислав Жаринов [ Вторник, 26 Июнь, 2012 12:12 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Т.е. перейти к "родному" прогязыку (псевдокоду)?.. А как со структурами данных?.. |
Автор: | Роман М. [ Вторник, 26 Июнь, 2012 12:19 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Владислав Жаринов писал(а): Т.е. перейти к "родному" прогязыку (псевдокоду)?.. А как со структурами данных?.. Разве в Драконе никак не решена проблема записи структур данных?
|
Автор: | Владислав Жаринов [ Вторник, 26 Июнь, 2012 12:26 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Ну как это... можно вот как здесь... А исходя из того, что данные равноправны с операциями и самостоятельно описываются - можно и как здесь... Вы что-то такое имели в виду?.. |
Автор: | ==== [ Четверг, 28 Июнь, 2012 08:51 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
TAU писал(а): Все очевидно - схема гораздо нагляднее Не согласен http://sharaga.org/index.php?showtopic=1953&view=findpost&p=54960 MrYuran 27.1.2012, 20:01 Цитата: Еще одно коренное отличие - это то, что в иконах вписывается непосредственно код, а комментарии - внутри, видны при выделений иконы. У Ильченко Эдуард описания предметной области вообще нет.
В ИС Дракон Тышова - наоборот, снаружи человеческий язык, а внутри расписание код. И это, по-моему, правильнее. |
Автор: | Valery Solovey [ Четверг, 28 Июнь, 2012 21:03 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Мне так кажется, что Ваше утверждение не имеет отношения к сообщению, на которое Вы отвечали из-за отсутствия прямой логической связи между ними. |
Автор: | Владислав Жаринов [ Пятница, 29 Июнь, 2012 18:26 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Ну, если отвлечься от "победной реляционности" - то зерно в том, что разные уровни формализации есть. И надо для удобства между ними переключаться. А также и показывать совмещённо - как я и делаю чаще всего (с "формальными комментариями" и/или отдельными блоками). И тут также выявляется и разная "доведённость" в различных частиях описания. Описание предметки (неимперативная часть формализации задачи) к импер-языку, ессно не относится. Можно описывать по-разному - как раз выше примеры тому.. И там тоже разная формализованность будет... |
Автор: | Владимир Паронджанов [ Пятница, 24 Август, 2012 15:09 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Уважаемый Эдуард Ильченко! Здесь анализируют Ваш алгоритм АВЛ-дерево http://oberspace.dyndns.org/index.php/topic,275.0.html |
Автор: | Владислав Жаринов [ Суббота, 25 Август, 2012 14:00 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
И очень быстро переходят на сам язык... прямо со второго поста... |
Автор: | Владимир Паронджанов [ Пятница, 05 Сентябрь, 2014 23:13 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Поздравляю Эдуарда Владимировича Ильченко, создавшего эту важную тему и инициировавшего обсуждение. Эта инициатива имела важное продолжение. http://persons.iis.nsk.su/files/persons ... insert.pdf Прочитав данное обсуждение В.И. Шелехов вдохновился, получил грант Российского фонда фундаментальных исследований и написал статью: Цитата: В.И. Шелехов Предикатная программа вставки в АВЛ-дерево Операции с АВЛ-деревьями компактно и элегантно представляются в языках функционального программирования, см. например [4, 5]. Однако функциональные программы для таких операций, как вставка или удаление вершины, заведомо неэффективны, поскольку определяют построение нового дерева, а не модификацию исходного. В рамках предикатного программирования делается попытка, возможно впервые, построения таких алгоритмов (рекурсивного и нерекурсивного) вставки в АВЛ-дерево, чтобы применением оптимизирующих трансформаций получить эффективные императивные программы, подобных представленным в [1–3]. Цитата: Заключение
Предпосылкой появления данной работы стала дискуссия на форуме [3] о том, какая из программ вставки в АВЛ-дерево лучше: на языке Оберон или графическом языке Дракон [6]. Эргономические методы, применяемые в языке Дракон, существенно улучшают восприятие программы. Тем не менее, программа не выглядит проще. Причина – исходная сложность императивной программы. Методы предикатного программирования: использование рекурсивных программ вместо циклов, алгебраических типов вместо указателей и др. позволяют в несколько раз снизить сложность программы по сравнению с аналогичной императивной программой, в частности с программами на форуме [3]. Доступ к вершине дерева реализован через указатель на поле (в некоторой вершине), в котором хранится ссылка на требуемую вершину. При передаче через параметр программы возникает двойной указатель. В описании библиотеки libavl [2] используется однократный указатель, однако при этом дополнительно поддерживается указатель на предыдущую вершину-отца. Как следствие, алгоритм получается более громоздким и менее эффективным в сравнении с приведенным в настоящей работе. В нашей версии, тем не менее, для каждого двойного указателя заводится соответствующий одинарный. Реализация такой техники в трансформациях может оказаться нетривиальным. Поэтому в начальном релизе следует ограничиться только двойным указателем. Работа выполнена при поддержке РФФИ, грант № 12-01-00686. Литература 1. Википедия. АВЛ-дерево. http://ru.wikipedia.org/wiki/%D0%90%D0% ... 0%B2%D0%BE 2. Ben Pfaff. GNU libavl 2012. An Introduction to Binary Search Trees and Balanced Trees. ftp://ftp.gnu.org/pub/gnu/avl/avl-2.0.2.pdf.gz 3. АВЛ-дерево. Алгоритм добавления вершины. viewtopic.php?f=78&t=4003 4. R. Hettler, D. Nazareth, F. Regensburger, O. Slotosch. AVL trees revisited: A case study in Spectrum. LCNS, vol. 1009, 1995, pp 128-147. 5. AVL Tree in Haskell. https://gist.github.com/gerard/109729 6. Паронджанов В. Д. Язык ДРАКОН. Краткое описание. — М., 2009. — 124 с. 7. Карнаухов Н.С., Першин Д.Ю., Шелехов В.И. Язык предикатного программирования P. Версия 0.12 — Новосибирск, 2013. — 52с. http://persons.iis.nsk.su/files/persons ... lang12.pdf 8. Каблуков И. В. Реализация оптимизирующих трансформаций предикатных программ // XIV Всероссийская конференция молодых ученых по математическому моделированию и информационным технологиям. Томск, 2013. 7с. http://conf.nsc.ru/files/conferences/ym ... 69/177104/Опт.%20трансформации.pdf Читать дальше ... |
Автор: | usr345 [ Воскресенье, 07 Сентябрь, 2014 12:43 ] |
Заголовок сообщения: | Re: АВЛ-дерево. Алгоритм добавления вершины. |
Нет здесь никакого улучшения наглядности: просто код записали в квадратиках. Я бы и текстом прочитал. Чтобы понять работу алгоритма нужно описать, что дано на человеческом языке, нарисовав АВЛ-дерево. И последовательно писать, как оно изменяется на каждом этапе. Тогда код все можно будет понять. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |