Графы (graph) и алгоритмы обхода - Структуры данных C#
Vložit
- čas přidán 10. 04. 2019
- Граф - graph - представляет собой набор узлов, соединенных друг с другом в виде сети. Узлы также называются вершинами. Пара (x, y) называется ребром, которое указывает, что вершина x соединена с вершиной y. Ребро может содержать вес/стоимость, показывая, сколько затрат требуется, чтобы пройти от x до y.
Графы делятся на два основных типа: ориентированные и неориентированные. У неориентированных графов рёбра между узлами не имеют какого-либо направления, тогда как у рёбер в ориентированных графах оно есть. Чаще всего граф изображают в каком-либо из двух видов: это может быть список смежности или матрица смежности. Рассмотрим основные алгоритмы обхода графа: обход графа в ширину и обход графа в глубину.
Подписывайтесь на мои социальные сети, там много всего интересного и полезного:
codeblog
tele.click/codeblog
zen.yandex.ru/codeblog
Поддержать канал: www.donationalerts.ru/r/shwanoff
Кстати, меня зовут Вадим, и я программист на языке C# уже больше 8 лет. Рассказываю про IT технологии и веду этот курс по языку C# с нуля под названием Учим Шарп. В его рамках мы рассмотрим как базовый синтаксис языка C Sharp, так и его практическое применение и специальные технологии, такие как ASP.NET, Core, MVC, Unity, WCF, WPF, структуры данных и алгоритмы обработки, паттерны проектирования и многое другое. Для меня важно не только показать практическое применение языка C#, но и объяснить основную идею и базовые понятия Computer Science.
Подробный курс по языку программирования C#:
• Преимущества и недоста...
Подробный курс по структурам данных на языке программирования C#:
• Связный список (linked...
Подробный курс по алгоритмам сортировки на языке C#:
• Сортировка пузырьком (...
Разговоры о программировании, мотивации, и ответы на IT вопросы:
• Практика программирова...
#программирование #csharp #программист #ityoutubersru #codeblog
Граф - graph - представляет собой набор узлов, соединенных друг с другом в виде сети. Узлы также называются вершинами. Пара (x, y) называется ребром, которое указывает, что вершина x соединена с вершиной y. Ребро может содержать вес/стоимость, показывая, сколько затрат требуется, чтобы пройти от x до y.
Графы делятся на два основных типа: ориентированные и неориентированные. У неориентированных графов рёбра между узлами не имеют какого-либо направления, тогда как у рёбер в ориентированных графах оно есть. Чаще всего граф изображают в каком-либо из двух видов: это может быть список смежности или матрица смежности. Рассмотрим основные алгоритмы обхода графа: обход графа в ширину и обход графа в глубину.
Владимир, благадарю за стрими не останавливайся.
Классная тема. Спасибо автору за видео, очень понятно и хорошо рассказывает о графах и о том как их представить в C#. Мне данное видео очень помогло, когда делал лабораторную работу.
Очень рад, что смог помочь )
Спасибо мой лысый товарищь!! Освежило память
Всегда пожалуйста )
Привет из Курска!
Очень пригодилось в семестровой работе!!! спасибо огромное! Успехов!
Спасибо! Давно хотел освоить данную тему!
Хорошие пояснения. Пусть видео уже год, оно не утратило актуальности
Очень обидно, что на такой крутой теме, так мало просмотров
Ну тут ничего не поделать )
Спасибо, а то в книге было не очень понятно, жду следующую главу clr via C#
Спасибо большое !
Очень доходчиво, спасибо!
Всегда пожалуйста )
огромное вам благодарность!!!!!
Спасибо за стрим, я когда на плюсах реализовывал сделал по другому, у меня вершины содержали ребра а не наоборот) и по вершинам можно было передвигаться перемещаясь по ребрам как в списке по ссылкам, задача была реализовать алгоритм Дейкстры, и я в качестве графа взял несколько городов и пытался найти кратчайший путь, ну и морока была) при чем в теории все легко и понятно, но как берешься за реализацию это был просто батхерд)) было интересно посмотреть на другую реализацию)
ну да, универсального решения нет. каждая структура данных адаптируется под конкретную задачу.
просто отец, продолжай выпускать обучающие стримы, лайк и колокольчик вместе с подпиской
Рад помочь )
Планируется ли стрим по алгоритму Дейкстры?
Музончик зачот!
Спасибо за тему - как раз для собеседования нужно структуры данных подтянуть.
PS можно же в какой нормальной программе рисовать, что бы с планшетом не мучаться
21:25, это означает, что первый и последний э-нт будет иметь два значения(два веса)?
Thank you very much!
You are welcome )
Пожалуйста, напишите как реализовать с отображением пути, а не просто есть или нет путь...а также в глубину хотелось бы тоже узнать, в чем отличие от в ширину именно в коде. спасибо
Если используешь горячие клавиши, говори их пожалуйста, просто я запутался конкретно.... :)
Спасибо!
Рад помочь :)
А можешь код в комментарии кинуть или под видосик ?
Спасибо.
Подписался на канал)
Жаль про внешние варианты представления графов не было(
1:09:25 мне кажется, или вы перепутали row (ряд) и colum (колонка) местами. Ведь в колонке должны быть откуда, а в строке куда. Если я не прав то поправьте)
да ты ошибся немного. Если представить 2мерный массив как таблицу, то row это индекс строки таблицы, то есть первый индексатор 2мерного массива, а column индекс колонки таблицы. Главное хорошенько представить это все визуально и станет понятнее. "Откуда" - номер строки таблицы, "Куда" - номер колонки таблицы.
музыка топ)
7к просмотров, 380 лукосов, а было бы платно было 20к лукосов-)
Как формировать граф из файла?
Нужно написать алгоритм чтения файла. ведь файлы могут быть разные :)
Спасибо автору за видео, хорошо все объяснил.
Заметил одну одну потенциальную ошибку, если количество вершин и количество ребер одинаковое, матрица строится как надо, но если количество ребер больше то будет IndexOutOfRangeException.
Можно заюзать что-то типа этого:
public int[,] GetArray()
{
var matrix = new int[Count, Count];
for (int i = 0; i < Count; i++)
{
for (int j = 0; j < Count; j++)
{
matrix[i, j] = _edgeses.Where(x => x.From.Id == i+1 && x.To.Id == j+1).Select(x => x.Weight)
.FirstOrDefault();
}
}
return matrix;
}
Возможно и был косяк ) спасибо за исправление )
Зачем в "public int Weight {get; set:}" писать {get; set:}?)))))
Худшее что я мог увидеть на данную тему
Нудный