fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Data Science: Алгоритмы и Структуры данных

Data Science: Алгоритмы и Структуры данных

رفتن به کانال در Telegram

Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество: @oleginc Канал на бирже: https://telega.in/c/structuredata

نمایش بیشتر
7 575
مشترکین
-324 ساعت
-197 روز
-6630 روز
آرشیو پست ها
Задача: найти материнскую вершину в графе Итак нам дан граф, нам нужно найти материнскую вершину. Материнской вершиной в граф
Задача: найти материнскую вершину в графе Итак нам дан граф, нам нужно найти материнскую вершину. Материнской вершиной в графе G = (V, E) называется вершина v такая, что все остальные вершины в G могут быть достигнуты путем из v. Есть несколько кейсов, которые позволяют это сделать. 1. Ненаправленный связанный граф - в этом случае все вершины являются материнскими вершинами, поскольку мы можем достичь все другие узлы в графе из выбранного 2. Ненаправленный/Направленный исключенный граф - в этом случае нет материнских вершин, поскольку мы не можем достичь всех узлов из выбранного 3. Направленный связнфй граф - в этом случае мы должны найти вершину v в графе, что удостоена условию "маринский"

Девушка попросила помочь ей с гаджетом, а ты даже драйвера без помощи гугла обновить не можешь? В канале НеЛамер ежедневно публикуются разные фишки, лайфхаки и многое другое, что поможет тебе обращаться с техникой на Ты и быть в силах помочь любой девочке с её гаджетом. Подписывайся, изучай полезную информацию и не будь ламером: @Ne_Lamer

Оптимизация представления графов по средствам Set и hash-функций Основа этой оптимизации будет заключаться в использовании -
Оптимизация представления графов по средствам Set и hash-функций Основа этой оптимизации будет заключаться в использовании - unordered set. Его реализацию вы можете встретить в c++, однако, может и реализовать ее сами. Unordered_set может содержать ключ любого типа - предопределенную или определяемую пользователем структуру данных, но когда мы определяем ключ типа, определяемого пользователем, нам нужно указать нашу функцию сравнения, в соответствии с которой будут сравниваться ключи. По факту это единственная сложность в реализации данной структуры данных. Завтра обсудим, как же ее реализовать всё таки!

Представление графа через Set и hash суммы По факту данное представление очень сильно схоже с списком смежности, однако, есть
Представление графа через Set и hash суммы По факту данное представление очень сильно схоже с списком смежности, однако, есть некоторые особенности! Давайте их и разберем сегодня. Набор отличается от вектора 2мя вещами: 1. он хранит элементы в отсортированном порядке (так как мы используем Set) 2. дублирование элементов не допускается (так как по прежнему, это свойство самого Set) Соответственно данный подход не получится применить для графов, у которых есть параллельные ребра. Поскольку множества внутренне реализованы как деревья двоичного поиска (очень важный факт), ребро между двумя вершинами можно искать за время O (log V), где V - количество вершин в графе. На картинке представлен пример того самого сета. Завтра рассмотрим оптимизацию данного подхода

Приложения где используется алгоритм обхода BFS графа 1. Нахождения пути или кратчайшего пути. Ибо при использовании BFS мы в
Приложения где используется алгоритм обхода BFS графа 1. Нахождения пути или кратчайшего пути. Ибо при использовании BFS мы всегда достигаем нужной вершины из заданного источника, используя минимальное количество ребер. 2. Поисковые роботы или сканеры. Исследуется страница источник и проходится все в ширину, для оценки самих страниц. 3. Социальные сети. По факту любая ваша соц. сеть - состоит сугубо из графа. И обходы графа тут используются как раз BFS в основном. 4. Системы GPS-навигации. Опять же для построения маршрута 5. Сборка мусора во многих языках программирования, написана как раз через обход графа в BFS стиле (.NET platform) 6. Для проверки двудольности графа

Изучить основы Python за 14 дней? За 990 рублей? Это реально! Подключайтесь к нашему подготовительному курсу по Python-разраб
Изучить основы Python за 14 дней? За 990 рублей? Это реально! Подключайтесь к нашему подготовительному курсу по Python-разработке! Не важно, сколько вам лет, какое у вас образование и кем вы работаете сейчас. Для начала обучения не нужен опыт в разработке! Даём только мясную и прикладную информацию. Никакой воды и траты вашего времени. Всего за 2 недели вы изучите основы языка под руководством опытного наставника, пройдете 69 урока с практикой в браузере и напишите свою первую программу. Торопитесь. Стартуем 12 октября!🤘

Применение DFS графа Итак, многие задаются, зачем мне графы и зачем эти обходы и их понимание? А я отвечу: эти алгоритмы дост
Применение DFS графа Итак, многие задаются, зачем мне графы и зачем эти обходы и их понимание? А я отвечу: эти алгоритмы достаточно много где применимы. Давайте рассмотрим несколько примеров: 1. Обнаружить цикл (зацикливание) на графике 2. Поиск кратчайшего пути, также возможен при помощи DFS обхода графа. Обход DFS даст нам дерево кратчайших путей 3. Решать определенные пазлы (логические) 4. Топологическая сортировка, которую мы с вами тоже скоро разберем

Обход в глубину DFS графа Обход в глубину (поиск в глубину) для графа аналогичен обходу в глубину дерева. Но и тут есть отличия (как и было с BFS): узел можно посетить циклично. Чтобы это избежать снова используйте логический массив посещений. Кстати на гифке показан сам обход и сделано это максимально наглядно, советую внимательно изучить.

Обход в ширину (поиск в ширину) BFS графа Обход BFS графа почти похож на обход дерева по ширине (который мы недавно разбирали
Обход в ширину (поиск в ширину) BFS графа Обход BFS графа почти похож на обход дерева по ширине (который мы недавно разбирали). Единственное исключение заключается в том, что, в отличии от деревьев, графы могут содержать циклы, поэтому мы можем (случайно) прийти к одному и тому же узлу. Чтобы избежать обработки узла более одного раза, мы используем логический массив посещений. Для простоты говорится, что все вершины достижимы из начальной вершины.

Представление графов при помощи списка смежности По факту используется массив списков. Размер массива равен количеству вершин
Представление графов при помощи списка смежности По факту используется массив списков. Размер массива равен количеству вершин. Пусть массив будет array. Входной массив i представляет собой список вершин, смежных с i-ой вершиной. Это представление также можно использовать для представления взвешенного графа. Веса ребер можно представить в виде списков пар. На картинке показан - самый простой способ использования и построение по нему графа

Представление графа через матрицу смежности Матрица смежности - двумерный массив размером V x V, где V - количество вершин в
Представление графа через матрицу смежности Матрица смежности - двумерный массив размером V x V, где V - количество вершин в графе. Пусть 2D-массив имеет значение со слотом adjij = 1, который укажет нам, что есть ребро от вершины i к вершине j. Матрица смежности для неориентированного графа всегда симметрична. Матрица смежности также используетс для представления взвешенных графов. Если adjij = w, то из вершины i в вершину j существует ребро с весом w.

Представление графов Тут тоже не всё так просто! Граф можно представить 2мя часто используемыми способами: 1. Матрица смежнос
Представление графов Тут тоже не всё так просто! Граф можно представить 2мя часто используемыми способами: 1. Матрица смежности 2. Список смежности На самом-то деле есть и другие способы представления: Incidence List or Matrix. Выбор того или иного представления сильно зависит от ситуации. По факту вам должно быть достаточно просто использовать нужные вам операции с графом. Чем проще - тем лучше

Представление графов Тут тоже не всё так просто! Граф можно представить 2мя часто используемыми способами: 1. Матрица смежнос
Представление графов Тут тоже не всё так просто! Граф можно представить 2мя часто используемыми способами: 1. Матрица смежности 2. Список смежности На самом-то деле есть и другие способы представления: Incidence List or Matrix. Выбор того или иного представления сильно зависит от ситуации. По факту вам должно быть достаточно просто использовать нужные вам операции с графом. Чем проще - тем лучше

Кодим на коленке - прогерское комьюнити, а также все про бэкенд-разработку на Python, Java, C++, C#, PHP в коротких поленых статьях

Структура данных: Граф Пока вы решаете сложную задачу, мы перейдем к не менее сложной теме: графы! Граф состоит из конечного
Структура данных: Граф Пока вы решаете сложную задачу, мы перейдем к не менее сложной теме: графы! Граф состоит из конечного набора вершин(узлов) и набора ребер, которые соединяют пару узлов. Графы используются для решения многих реальных задач. К примеру для представления сетей: городских или телефонных или даже компьютерных сетей. Также представление графа заложено почти в каждой социальной сети.

Решение задачи: отсортировать почти отсортированный массив Я же не зря завел данную задачу, аккуратно после темы кучи (Heap).
Решение задачи: отсортировать почти отсортированный массив Я же не зря завел данную задачу, аккуратно после темы кучи (Heap). Как раз подобный вид сортировки - лучше сделать как раз при помощи Heap! Алгоритм 1. Создайте минимальную кучу (min Heap) размера k + 1, с первыми элементами k + 1 (это кстати у вас займет где-то O(k) 2. Один за другим удалите минимальный элемент из кучи, помещая элемент в массив результатов и добавьте новый элемент в кучу из оставшихся элементов

Задача: отсортировать почти отсортированный массив Дан массив из n элементов, где каждый элемент находится не более чем на k
Задача: отсортировать почти отсортированный массив Дан массив из n элементов, где каждый элемент находится не более чем на k от своей целевой позиции. Разработайте алгоритм, который выполняет сортировку за время O(n log k)

Сортировка кучей (HeapSort) Алгоритм сортировки в куче для сортировки в порядке возрастания: 1. Создайте максимальную кучу из
Сортировка кучей (HeapSort) Алгоритм сортировки в куче для сортировки в порядке возрастания: 1. Создайте максимальную кучу из входных данных. 2. На этом этапе самый большой элемент хранится в корне кучи. Замените его последним элементом кучи, а затем уменьшите размер кучи на 1. Наконец, скопируйте корень дерева. 3. Повторите шаг 2, пока размер кучи больше 1.

Операции над биномиальной кучей 1. insert(H, k) - вставкляет ключ К в биномиальную кучу H. Эта операция сначала создает бином
Операции над биномиальной кучей 1. insert(H, k) - вставкляет ключ К в биномиальную кучу H. Эта операция сначала создает биномиальную кучу с одним ключом, а затем вызывает объеденение для H 2. getMin(H) - пройдется по списку корней биномиальных деревьев и выдаст вам минимальный ключ 3. extractMin(H) - сначала вызывается метод getMin(), чтобы найти минимальное ключевое значение, после чего создаст новое биномиальное дерево, правильно его отформатировав 4. delete(H) - операция удаления, как и с операцией удаления в бинарном дереве: сначала уменьшает ключ до минус бесконечности, а после вызывает extractMin() 5. reduceKey(H) - сравниваем ключ уменьшения с ключом родительским, и если родительский ключ больше , мы меняем ключи и повторяем для родительского узла. Останавливаемся тогда, когда родительский элемент имеет наименьший ключ. 6. union - операция объеденения, которая используется во многих других функциях, как вы могли наблюдать.

Курс «Английский для аналитиков» от Яндекс Практикума Для специалистов, которые хотят изменить свою профессиональную жизнь и
Курс «Английский для аналитиков» от Яндекс Практикума Для специалистов, которые хотят изменить свою профессиональную жизнь и работать в международной команде. Обучение построено вокруг рабочих ситуаций и полезных для карьеры навыков: • Самопрезентация. Рассказ о своей роли, задачах, сфере ответственности на поведенческом интервью и в неформальной беседе. • Работа в команде. Стендапы, планирование спринтов, демонстрация навыков командной работы на собеседовании. • Общение с заказчиками и исполнителями. Сбор требований у стейкхолдеров и постановка задач для разработчиков. • Презентация результатов работы. Выступление на митапах, неформальное общение с коллегами из отрасли. • Обсуждение решений по проекту. Генерация и аргументация идей, участие в мозговых штурмах. • Рефлексия и самоанализ. Ретроспектива, ревью, ответы на сложные вопросы. Запишитесь на бесплатную консультацию. Определим ваш уровень языка, расскажем про обучение и ответим на все вопросы