Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович

Коллекция графа

Мы рассмотрим основные коллекции в языке C#.
Поэкспериментируем с ними, сравним их быстродействие.
Далее, познакомимся с теорией графов. Создадим класс
для представления графа в памяти компьютера.
Сделаем визуальное отображения графа и
составим алгоритмы поиска вширь и глубь,
с использованием коллекций Стек и Очередь.




3,000 руб.


Для подписки на пакет необходимо авторизоваться.

Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 ArrayList 00:12:16 30 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Все это знал 
Сложности: Ничего 
Комментарии: Очень хороший метод есть у списка, но нет у массива. Это Remove. В свое время я кучу нервов потратил на удаление элементов из двумерных и трехмерных массивов. 
2 List 00:12:57 30 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Узнал про списки 
Сложности: Понять что дополнительные методы у списка будут если подключить пространство имен System.Linq. У меня его не было. 
Комментарии: Почему-то начинается все не с начала. 
3 Array vs List 00:11:04 29 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 20 мин. [Показать отчёт]
Научился: Узнал про Stopwatch  
Сложности: Ничего 
Комментарии: Все понятно и доступно 
4 ListDictionary 00:15:19 29 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 20 мин. [Показать отчёт]
Научился: Узнал про коллекции ListDictionary, Hashtable, HybridDictionary и чем они отличаются друг от друга 
Сложности: Ничего 
Комментарии: Поигрался с методом .Contains(). Он ищет есть ли указанный ключ в коллекции. Также посмотрел что возвращает метод item.Value.GetType() 
5 Hashtable 00:11:56 27 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: Сравнил разницу создания Hashtable, HybridDictionary и ListDictionary.  
Сложности: Ничего 
Комментарии: HybridDictionary почему-то быстрее всех заполняет себя данными. Думал быстрее будет Hashtable. И есть странные результаты. Миллион ListDictionary с 10 элементами создается быстрее чем миллион ListDictionary с 8 элементами. 
6 BitArray 00:14:00 27 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Узнал про данный тип коллекции. Пока не могу понять для чего он может мне понадобиться. Но знать его полезно 
Сложности: Ничего 
Комментарии: Интересных методов у него нет. Стандартные 4 логические операции, хотя их больше. 
7 Граф 00:13:48 27 чел. ★ 4.9 Done
  Отчёт отправил: 1967. Дмитрий Решено за 20 мин. [Показать отчёт]
Научился: Узнал начальные сведения о графах 
Сложности: Придумать способ хранения графа. 
Комментарии: В первом массиве(списке) под порядковым номером хранится номер вершины. Если у него есть ребро с другой вершиной то в ячейке массива хранится порядковый номер второго массива(списка). В втором массиве под данным порядковым номером хранится номер вершины с которым соединена вершина из первого массива и цвет. Но что-то муть какая-то получается. 
8 Вершины 00:14:15 27 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Вспомнил итераторы 
Сложности: Ничего 
Комментарии: Ребра хранить в списке, в котором первое значение номер вершины №1, а втором значении список вершин с кем вершина №1 контактирует. По типу составного массива. Array[][] 
9 Рёбра 00:12:47 26 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 20 мин. [Показать отчёт]
Научился: Научился использовать коллекцию Dictionary 
Сложности: Ничего 
Комментарии: Хорошее домашнее задание 
10 Инициация 00:11:15 26 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Закрепление материала 
Сложности: Построить граф 
Комментарии: Вывел на экран просто каждую вершину и с кем она соединяется. Повторы не убирал. И расположение не делал. Примерно представляю как это сделать. Но думаю все гораздо проще. 
11 Отображение 00:16:18 26 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 20 мин. [Показать отчёт]
Научился: Вспомнил про рисование 
Сложности: Ничего 
Комментарии: Как я и думал все оказалось проще. Но моя проблема была в том, что я думал, что мы будем координаты вершинам определять автоматически, а не вручную их указывать. 
12 Шахматная доска 00:19:58 26 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: Закрепление материала 
Сложности: Ничего 
Комментарии: Вначале показалось запутанной эта конструкция: int number = GetGraphSteps(x, y, z); if (number >= 0) graph.NewEdge(x + y * size, number); Но чуть-чуть подумав все стало яснее ясного дня :) 
13 Широкий поиск 00:14:59 26 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Поиску в ширину 
Сложности: Ничего 
Комментарии: 0|2|3|5|7|10|12|1|4|6|9|11|8 
14 Широкий алгоритм 00:14:12 25 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Алгоритму поиска в ширину на практике. 
Сложности: Поиск ошибки 
Комментарии: Ошибка в том, что мы возвращаем номер вершины из нашей коллекции, меняем ее цвет. Коллекция меняется. А мы возвращаем номер с помощью yield, а коллекция поменялась. Вот программа и не может из-за этого работать.  
15 Широкий пошаговый ход 00:11:46 25 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: Ничему 
Сложности: Раскрашивать.  
Комментарии: Использовал делегат. Но надо еще добавить таймер на закраску иначе все мгновенно происходит 
16 Визуализация процесса 00:14:07 22 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Закрепил знания 
Сложности: Ничего 
Комментарии:  
17 Глубокий поиск 00:09:58 22 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 15 мин. [Показать отчёт]
Научился: Поиску в глубину 
Сложности: Ничего 
Комментарии: Добавлял цифры по возрастанию. 0|12|10|7|5|3|2 12|11|1|10|7|5|3|2 11|1|10|7|5|3|2 1|10|7|5|3|2 10|9|7|5|3|2 9|8|7|5|3|2 8|7|5|3|2 7|5|3|2 5|6|4|3|2 6|4|3|2 4|3|2 3|2 2 
18 Глубокий алгоритм 00:15:07 22 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 20 мин. [Показать отчёт]
Научился: Очень хороший курс. Узнал про коллекции и про графы. Разные методы поиска по графам. 
Сложности: Ничего 
Комментарии:  
19 ФИНАЛЬНЫЙ УРОК 22 чел. ★ 5 Done
  Отчёт отправил: 1967. Дмитрий Решено за 5 мин. [Показать отчёт]
Научился: Я, как обычно, не многословно. Очень хороший курс. Узнал про коллекции. Научился тестировать их на быстродействие. Теперь буду выбирать между массивами и различными видами списков осознанно, использовать то что лучше для какого-либо случая. Узнал как устроены графы. Что они должны уметь и какой смысл несут. Хоть мы и не охватили эту тему полностью. Наверно чтобы это сделать надо потратить не один месяц или даже год. Узнал про два метода поиска по графам. Во время обучения были использованы перечисления и какие подводные камни есть у некоторых коллекций при работе с итераторами. Курс стоит своих денег.  
Сложности:  
Комментарии:  
  Итого:   19 видеоуроков общей продолжительностью 4 час. 06 мин. 22 чел. ★ 5  
  Финалисты:   Максим,   Alcatraz,   Дмитрий,   Tekashnik,   Denis,   Иван,   Дмитрий 199,   Николай,   Михаил,   Дмитрий,   Ender,   Платон,   Владимир,   Андрей Н.,   Владимир Борисенко,   Максим Лапшинов,   Permitin Alexey,   Новопашин Владимир,   Максим Саратов,   Алексей В.,   Denchik,   Елена .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: писать отзыв
Трудности: --------------------------------------------
Интересно было подписаться на курс Коллекция графов и познакомится с этим понятием - граф. Разобраться что же все-таки такое граф, вершина графа, рёбра и их вес. Интересно было узнать для чего используется данная логика, где применяется и как эту логику правильно отобразить в коде. На курс у меня ушло полтора месяца. Я занимался только по вечерам. Сложность была только одна – приехать из отпуска и начать заново проходить курс. Курс представляет из себя 18 уроков и Финал. На первых 6 уроках нам рассказали о классах, описывающих коллекции и реализующих различные интерфейсы. На оставшихся 12 уроках мы познакомились с понятием графа, с логикой его описания в коде. Также познакомились с методами обхода неориентированного графа. Это поиск в ширину и поиск в глубину. Спасибо за предоставленный материал. Надеюсь что последний урок (18) Вами будет переписан. (да я вредный)
Смотреть видеозапись: https://youtu.be/fx957UHWyAA
Научился: На этом курсе мы изучили основные коллекции в С#, сравнили их быстродействие и эффективность. Создали класс для работы с графами и его графическое отображение. Было очень интересно реализовать поиск в ширину и глубину, начиная с ручной разработки алгоритма и заканчивая программной, с использованием очереди и стека. Получили базовые основы по графам, на их основе можно приступать к решению олимпиадных задач.
Трудности: Сложного почти не было. Евгений Витольдович очень ответственно отнесся к подготовке курса.
Я очень рад возможности поработать с этим замечательным курсом. Он мне много дал, трудно переоценить ценность знаний. Хочу особо выделить концовку курса, где пошагово видишь выполнение двух различных способов поиска по графу. Огромное спасибо Евгению Витольдовичу!!!