Графы (graph) и алгоритмы обхода - Структуры данных C#
HTML-код
- Опубликовано: 26 окт 2024
- Граф - graph - представляет собой набор узлов, соединенных друг с другом в виде сети. Узлы также называются вершинами. Пара (x, y) называется ребром, которое указывает, что вершина x соединена с вершиной y. Ребро может содержать вес/стоимость, показывая, сколько затрат требуется, чтобы пройти от x до y.
Графы делятся на два основных типа: ориентированные и неориентированные. У неориентированных графов рёбра между узлами не имеют какого-либо направления, тогда как у рёбер в ориентированных графах оно есть. Чаще всего граф изображают в каком-либо из двух видов: это может быть список смежности или матрица смежности. Рассмотрим основные алгоритмы обхода графа: обход графа в ширину и обход графа в глубину.
Подписывайтесь на мои социальные сети, там много всего интересного и полезного:
codeblog
tele.click/cod...
zen.yandex.ru/...
Поддержать канал: www.donational...
Кстати, меня зовут Вадим, и я программист на языке 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#
Спасибо большое !
Спасибо.
Подписался на канал)
Thank you very much!
You are welcome )
Музончик зачот!
Спасибо за тему - как раз для собеседования нужно структуры данных подтянуть.
PS можно же в какой нормальной программе рисовать, что бы с планшетом не мучаться
Спасибо!
Рад помочь :)
Если используешь горячие клавиши, говори их пожалуйста, просто я запутался конкретно.... :)
Планируется ли стрим по алгоритму Дейкстры?
Пожалуйста, напишите как реализовать с отображением пути, а не просто есть или нет путь...а также в глубину хотелось бы тоже узнать, в чем отличие от в ширину именно в коде. спасибо
1:09:25 мне кажется, или вы перепутали row (ряд) и colum (колонка) местами. Ведь в колонке должны быть откуда, а в строке куда. Если я не прав то поправьте)
да ты ошибся немного. Если представить 2мерный массив как таблицу, то row это индекс строки таблицы, то есть первый индексатор 2мерного массива, а column индекс колонки таблицы. Главное хорошенько представить это все визуально и станет понятнее. "Откуда" - номер строки таблицы, "Куда" - номер колонки таблицы.
музыка топ)
Спасибо автору за видео, хорошо все объяснил.
Заметил одну одну потенциальную ошибку, если количество вершин и количество ребер одинаковое, матрица строится как надо, но если количество ребер больше то будет 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;
}
Возможно и был косяк ) спасибо за исправление )
А можешь код в комментарии кинуть или под видосик ?
7к просмотров, 380 лукосов, а было бы платно было 20к лукосов-)
21:25, это означает, что первый и последний э-нт будет иметь два значения(два веса)?
Жаль про внешние варианты представления графов не было(
Зачем в "public int Weight {get; set:}" писать {get; set:}?)))))
Как формировать граф из файла?
Нужно написать алгоритм чтения файла. ведь файлы могут быть разные :)
Худшее что я мог увидеть на данную тему
Нудный