Предлагаю книгу "Графомания" (Деревенец О.В.). Алгоритмы на графах реализованы на языке Delphi (Object Pascal) Все исходники и контрольные примеры в наличии. Скачивается бесплатно. Содержание: Знакомство с объектами, отношениями и множествами Представление объектов в языке Delphi Представление множеств, операции с множествами Понятие о сложности (трудоёмкости) алгоритмов Задачи на множествах: • разбиение множества на подмножества; • задача о наименьшем разбиении (ЗНР); • задача о наименьшем покрытии (ЗНП). Представление отношений графами Программная реализация графов, ввод и вывод графов Группа задач на достижимость: • взаимная достижимость вершин; • кратчайшие пути между вершинами; • выделение сильно связанных компонент. Группа задач на размещение: • независимые вершины и клики; • доминирующие множества; • раскраски; • центры; • p-центры; • p-медианы. Остовные деревья Группа задач о потоках: • максимальный поток в сети; • поток, ограниченный сверху и снизу; • минимальная стоимость потока. Паросочетания: • паросочетание в двудольном графе; • паросочетание в произвольном графе. Цикл Эйлера и задача почтальона: • на неориентированном графе; • на орграфе. Задачи Гамильтона и коммивояжёра: • разомкнутая задача Гамильтона; • замкнутая задача Гамильтона (цикл); • комбинирование методов для задач Гамильтона; • замкнутая и разомкнутая задачи коммивояжёра.
@@romantsarev1145 проблема в том, братец, что ты своим контентом засоряешь ютюб и найти нормальный материал от адекватных опытных программистов становится сложнее. И это осложняет жизнь таким как я, потому я и высказываю тебе свое негодование твоим контентом, т.е. обоснованно и правомерно.
Предлагаю книгу "Графомания" (Деревенец О.В.). Алгоритмы на графах реализованы на языке Delphi (Object Pascal) Все исходники и контрольные примеры в наличии. Скачивается бесплатно. Содержание: Знакомство с объектами, отношениями и множествами Представление объектов в языке Delphi Представление множеств, операции с множествами Понятие о сложности (трудоёмкости) алгоритмов Задачи на множествах: • разбиение множества на подмножества; • задача о наименьшем разбиении (ЗНР); • задача о наименьшем покрытии (ЗНП). Представление отношений графами Программная реализация графов, ввод и вывод графов Группа задач на достижимость: • взаимная достижимость вершин; • кратчайшие пути между вершинами; • выделение сильно связанных компонент. Группа задач на размещение: • независимые вершины и клики; • доминирующие множества; • раскраски; • центры; • p-центры; • p-медианы. Остовные деревья Группа задач о потоках: • максимальный поток в сети; • поток, ограниченный сверху и снизу; • минимальная стоимость потока. Паросочетания: • паросочетание в двудольном графе; • паросочетание в произвольном графе. Цикл Эйлера и задача почтальона: • на неориентированном графе; • на орграфе. Задачи Гамильтона и коммивояжёра: • разомкнутая задача Гамильтона; • замкнутая задача Гамильтона (цикл); • комбинирование методов для задач Гамильтона; • замкнутая и разомкнутая задачи коммивояжёра.
Почему при шифровании через таблицу Виженера и шифровании через ваш способ получаются разные криптограммы? И дело не в сдвиге, проверялись и 0 и 1 и 2, все равно разные получаются
В каком смысле "мой" способ. Это не мой способ, а Виженера. В видео сначала теория, потом пример. Они друг другу соответствуют. Почему у вас не сходится, я не знаю. Напишите развернуто, что с чем у вас не совпадает попробую ответить.
@@romantsarev1145 я не понимаю, вам в кайф докапываться до слов и душнить? Очевидно, что под словом "ваш" подразумевается тот способ, который вы использовали и показали в видео🤨
G - граф, т.е. совокупность двух непересекающихся множеств: множества вершин V и множества ребер E. D - множество, которое мы формируем в ходе работы алгоритма. Подпробнее об этом в ролике.
Я программист из Калифорнии. Вот ответ на Ваш коммент у Программиста из сан Франциско: Роман сразу меня забанил и стёр коммент: Вот комментарий: Да, невесёлая прогулка, вот магазин детской игрушки закрылся-разорился. Конечно, зачем он нужен, когда все дети поумирали от жизни такой! Российские программисты, приезжайте в США, мне будет веселее с хорошими людьми, но имейте в виду: ваш ребёнок тоже может умереть! А то как, американцы ведь потомки англичан, а англичане-сволочи замучили собачку-тальбота до полного исчезновения. Вот и ваш ребёнок умрёт, а у вас останется только съёмная квартира и старая тойота! Вот тротуар перегорожен от людей, а зачем? - ведь люди то повымирали, никого нет, вон даже статистику смертности мне отказались давать в мэрии Сан Матео, тоже там, видимо, все умерли. Вот бомжи какие-то сидят, дай-ка подойду их поснимаю и с ними поговорю, авось они мне в морду дадут, будет, что рассказать. Нет, не побили, только просили не снимать, недружелюбные какие! Я им сказал, что их не снимаю, а сам снимал, надо же, чтобы в России их посмотрели!
Граф как математический объект есть совокупность двух множеств - множества объектов, называемого множеством вершин, и множества их парных связей, называемого множеством рёбер. Элемент множества рёбер есть пара элементов множества вершин.
Просто поразительно! Нет-нет да и надо сказать вместо "в 1969-м году" - "в 1989-м году". В инете сплошь и рядом! Когда на картинке не нарисовано, или проверить нельзя то туго приходится...😉
Оговорился, когда записывал. Правильно, как на слайде, 1969. Перезаписывать не стал, потому-что на тот момент звук выстроить не смог бы. Однако, если Вы так внимательно слушали, то должны были заметить, что я подчеркиваю, что Матиясевич продолжил этот алгоритм ранее Кнута, Морриса и Пратта. А они это сделали в 1970, опубликовали в 1977. Так что 1989 однозначно отпадает. 🎉
Я ПО ВЕЧЕРАМ ВИДЕЛА КОГДА ТО В ДОНЕЦКОЙ ОБЛ.... КАК ЖЕ БЫСТРО МАХАЕТ КРЫЛЬЯМИ, В ДЕТСТВЕ ВСЁ ПОЙМАТЬ ХОТЕЛА, А ПОТОМ ОДНАЖДЫ ВЗРОСЛАЯ ХОТЕЛА ПОЙМАТЬ, ТАК ОН, ПОХОЖЕ БЫЛО НАПАЛ... Я ДАЖЕ НЕ ПОНЯЛА, АЖ ПОЛУМАЛА ВДРУГ КУСАЕТСЯ😯
Спасибо за объяснение! Я написал этот псевдокод на JavaScript, однако, у меня массив [1,4,3,8,5] не упорядочился. В этоге получилось так: [1,3,4,8,5]. Чтобы это работало я во внешнем цикле увеличил диапазон до n, т.е. до длинны массива. Вот фрагмент моего кода внешнего цикла: for(let i = 1; i < arr.length; i++){....}. Здесь arr - это аргумент, который я передаю в функцию по сортировке, т.е. arr - это и есть массив, а вот arr.length - это встроенный метод, который возвращает длину массива. А вообще я изначально думал, как лучше сделать вставку элемента Х, чтобы не менять местами все элементы. Но не придумал. Например, можно добавить элемент Х в нужное место и затем удалить элемент Х из исходного места с помощью встроенных методов для объекта массива array.splice и array.slice, но я думаю, что у каждого под капотом живёт ещё и переиндексация элементов массива, т.е. сложность будет уже не O(n^2), а O(n^4). PS: там в псевдокоде даже когда мы ничего не должны по идее менять, то всё равно происходит присвоение A[j]=x. Я понимаю, что тут уже на сложность O(n^2) это не влияет, но всё как по мне, то неплохо было бы ничего не делать, если ничего не нужно менять. Я проверил эту идею и оборнул весь цикл while и A[j]=x в if-else statement. Теперь если x > A[j-1], то просто идём дальше по массиву вправо.
так а модуль N чему равен не понимаю... так ведь получается что все суммы последовательностей будут > 5 (если предположить что N = 5, и данный пример сообщение\ключ). Не понятно в какой момент определяется значение N... Это по идее константа, но почему в видео упущен этот момент, он же основной, при дешифровке же тоже нужно знать чему = N! Из комментов понял что N = количеству букв используемого алфавита т.е 26. Не понимаю как можно такие ключевые моменты без которых "пазл" вообще не сложится не объяснять в начале? Остается не понятым момент при дешифровании, почему мы складываем 5 и 26, и не складываем 9 и 26 напрмиер?
Сложение по модулю N в качестве результата имеет остаток от деления обычной суммы слагаемых на модуль N. Например, сложение по модулю 26 чисел 5 и 8 будет 13 (собственно как и без модуля), а сложение по модулю 26 чисел 15 и 18 будет 7 (здесь уже важен модуль N=26, 15+18-26=7). И, да, Вы правы, при дешифровке нужно знать N.
@@romantsarev1145 Рома, вопрос немного абстрактный - многие алгоритмы ст очки зрения имплементации на C# даются мне легко, а некоторые - как Дейкстра например, затыкаюсь в каком то моменте, теряю связь, нить и т.д. Этот ступор был у меня на некоторых собесах. Как выявить в себе причину тормоза? Буду крайне признателен за совет. Спасибо
В данном моменте 1 итерация - это одного цикла, а во вложенном цикле итераций больше, то есть итерации первого цикла нужно помножить на итерации второго цикла и тогда получится правильное число итераций
@@romantsarev1145 итерация - это повторение какого либо действия, математической операции и т.д. В итоге получается в первом цикле происходит сравнение впереди идущих элементов и если их нужно поменять местами, происходит замена элементов (итерация) далее, во вложенном цикле, сравнивается помененный раннее элемент в обратном порядке и при необходимости происходит замена (это снова итерация), чтобы он встал на свое место. То есть получается, что общее кол-во итераций, это количество итераций внешнего цикла, помноженное на кол-во итераций вложенного цикла.
@@romantsarev1145 для простоты объяснения, возможно. А когда необходимо разбирать алгоритмы на скорость работы, то тут следует учитывать и итерации вложенных циклов потому, как это сильно влияет на скорость работы алгоритма.
Если несовпадающий символ не самый правый/последний в образе то 1. У вас: смещение берём по последнему символк образа 2. Вот тут ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-kvWFAZwZ_8U.html : по несовпадающему символу образа 3. А вот тут ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-N6G6HVwJ4wQ.html : по несовпадающему символу СТРОКИ Почему такие разночтения ?
Нет, так кажется всем (я надеюсь). Однако, это очень странный вопрос. В видео ничего не говорится о том, что существует путь 1,2,4,3,5. Ну, потому что его нет. Полагаю, что речь идет об особых путях. Рекомендую пересмотреть, как они расчитываются на каждой итерации: 2:27-4:13 Перед этим будет полезно вспомнить, что такое особый путь, что такое множество S и массив D: 0:35-1:31 После просмотра Вы получите ответ на Ваш вопрос, тот, что между строк.
Да, из 2 в 4 нет пути. Все получилось. Сейчас дам наводку. Полагаю, что речь идет об особых путях. Рекомендую пересмотреть, как они расчитываются на каждой итерации: 2:27-4:13 Перед этим будет полезно вспомнить, что такое особый путь, что такое множество S и массив D: 0:35-1:31 После просмотра у Вас должен отпасть вопрос о пути между вершинами 2 и 4.
Не могли бы Вы пояснить, почему сложность здесь O(|E| * log|V|)? Кажется, алгоритм выполняет до |V| - 1 итераций и на каждой перебирает все доступные ребра. Похоже на O(|V| * |E|).
а что делать, если в матрице Р в одном столбце несколько значений разных, а в каком то столбце вообще нет значений кроме 0(на протяжении алгоритма в матрицах значения в этом столбце не менялись)?Как восстанавливать путь тогда?
Следующий этап развития пузырьковой сортировки - шейкерная сортировка (Coctail-shaker sort). Это типа двусторонняя пузырьковая сортировка: на первом проходе толкает макс. элемент от начала в конец массива, на втором - мин. элемент от конца в начало и т. д. Работает быстрее пузырьковой в некоторых случаях, например, когда исходный массив отсортирован наоборот... А вообще эти пузырьковые сортировки - учебные, и на практике, в промышленном коде, не применяются. Для массивов с небольшим количеством элементов используют сортировку вставками или выбором.