На нашем ресурсе вы можете полностью погрузиться в мир книги «Гуманитарные основы комбинаторных алгоритмов» — читайте её онлайн бесплатно в полной, несокращённой версии. Если предпочитаете слушать — воспользуйтесь аудиоформатом; хотите сохранить — скачайте через торрент в fb2. Жанр произведения — Знания и навыки, Учебная и научная литература, Прочая образовательная литература. Также на странице доступно подробное описание, авторская аннотация, краткое содержание и живые отзывы читателей. Мы постоянно пополняем библиотеку и улучшаем сервис, чтобы создавать лучшее пространство для всех ценителей качественной литературы.
Гуманитарные основы комбинаторных алгоритмов

Автор
Дата выхода
24 мая 2023
🔍 Загляните за кулисы "Гуманитарные основы комбинаторных алгоритмов" — аннотация, авторский взгляд и ключевые моменты
Перед погружением в полный текст предлагаем познакомиться с произведением поближе. Здесь собраны авторские заметки, аннотация и краткое содержание "Гуманитарные основы комбинаторных алгоритмов" — всё, что поможет понять глубину замысла и подготовиться к чтению. Материалы представлены в оригинальной авторской редакции (Иван Гаврюшин) и сохраняют аутентичность произведения. Если чего-то не хватает — сообщите нам в комментариях, и мы дополним описание. Читайте мнения других участников сообщества: их отзывы часто раскрывают скрытые смыслы и добавляют новые грани понимания. А после прочтения обязательно вернитесь сюда — ваш отзыв станет ценным вкладом в общее обсуждение книги.
Описание книги
Книга о гуманитарных основах комбинаторных алгоритмов представляет собой сборник статей и заметок, опубликованных в Интернете автором в период с 2015 по 2022 год. Книга предназначена для программистов с гуманитарным образованием и широкого круга читателей. Издание создано на основе личного блога автора на сайте Хабрахабр.
📚 Читайте "Гуманитарные основы комбинаторных алгоритмов" онлайн — полный текст книги доступен бесплатно
Перед вами — полная электронная версия книги "Гуманитарные основы комбинаторных алгоритмов", адаптированная для комфортного онлайн-чтения. Мы разбили произведение на страницы для удобной навигации, а умная система запоминает, на какой странице вы остановились — можно закрыть браузер и вернуться к чтению позже, не тратя время на поиски. Персонализируйте процесс: меняйте шрифты, размер текста и фон под свои предпочтения. Погружайтесь в мир литературы где угодно и когда угодно — любимые книги теперь всегда под рукой.
Текст книги
После некоторых размышлений мне стало интересно, как бы я реализовал алгоритм поиска всех путей из одной начальной точки (a) в какую-то другую единственную конечную точку (f) на ориентированном графе. Я уже было начал читать об алгоритмах поиска в глубину и ширину, но мне
подумалось, что интереснее было бы попробовать «изобрести» алгоритм заново, часто ведь при таком подходе можно получить интересную модификацию уже известного алгоритма. Заодно я поставил себе несколько условий: 1) не использовать литературу; 2) использовать нерекурсивный подход; 3) хранить ребра в отдельных массивах, без вложенности.
Сам граф получился такой:
В общем: на входе ориентированный граф с шестью вершинами, задача найти все пути из а в f без рекурсии и с минимальными затратами средств.
Ребра хранятся в нескольких массивах, имя массива – вершина:
$a=array (’b’,’c’,’d’);
$b=array (’d’,’e’,’f’);
$c=array (’d’,’e’,’f’);
$d=array (’e’,’f’);
$e=array (’f’);
Чтобы получить первый путь, я решил пройтись по нулевым индексам каждого массива и склеить их в одну строку х (в этой переменной на каждом этапе будет хранится найденный путь).
В массиве int все элементы, которые есть в графе в обратном порядке.
$int=array (’f’,’e’,’d’,’c’,’b’,’a’);
Тогда получить первый путь очень просто, достаточно пройтись циклом по всем массивам, добавлять в х новое значение с помощью конкатенации, и на каждом этапе использовать элемент из предыдущего массива в качестве указателя на следующий массив.
Этот стиль немного напоминает bash, но код выглядит довольно понятным:
$x=’a’;
$z=$a [0];
while (1) {
$x.=$z;
$z=$ {$z} [0];
if ($z == ’f’) {$x.=$z; break;}
}
И так, мы получили первый путь x=abdef.
Можем вывести его на экран и заняться непосредственно самим алгоритмом, так как все, что было выше, – это только подготовительная часть. По идее от нее можно было бы избавиться, но я ее оставляю и публикую, чтобы был лучше понятен ход мысли.
Выводим на экран первый путь и запускаем первую функцию.
print $x;
print '
»;
search_el ($x,$a,$b,$c,$d,$e);
Сам алгоритм фактически сводится к двум циклам, которые вынесены в отдельные функции.





