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

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

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

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




3,000 руб.


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

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

# Название видеоурока Решило Рейтинг Доступ
1 ArrayList 00:12:16 30 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 10 мин. [Показать отчёт]
Научился: Основе работы с коллекциями) Поигрался с методами 
Сложности: Ничего сложного 
Комментарии: Попробовал поиграться с несколькими методами. Посмотрел как ArrayList хранит различные типы данных 
2 List 00:12:57 30 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 15 мин. [Показать отчёт]
Научился: Пока ничему новому) 
Сложности: Ничего сложного 
Комментарии: Попробовал использовать List для создания английского алфавита и метод Reverse чтобы вывести его в обратном порядке 
3 Array vs List 00:11:04 29 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Засекать время работы блока кода 
Сложности: Ничего сложного 
Комментарии: Поигрался с разными методам коллекций и простых массивов. Посмотрел на время их работы для различных типов коллекций. 
4 ListDictionary 00:15:19 29 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 10 мин. [Показать отчёт]
Научился: Поработал с ListDictionary 
Сложности: Ничего сложного 
Комментарии: Узнал кое что о хэш функциях и таблицах. И как данные представляются в виде дерева. 
5 Hashtable 00:11:56 27 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 15 мин. [Показать отчёт]
Научился: Узнал два новых вида колекций 
Сложности: Ничего сложного пока) 
Комментарии: Just do it) 
6 BitArray 00:14:00 27 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 10 мин. [Показать отчёт]
Научился: Познакомился с коллекцией BitArray 
Сложности: Ничего сложного 
Комментарии: Попробовал работу с различными булевыми операциями. Научился выяснять размер занимаемый в памяти 
7 Граф 00:13:48 27 чел. ★ 4.9 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Узнал о графах и как можно представлять в памяти компьютера 
Сложности: Ничего особенно сложного 
Комментарии: Попробовал нарисовать граф. Там же на скриншоте набросал, как может выглядеть коллекция которая будет хранить информацию о его ребрах и вершинах) Прошу строго не судить. Только сегодня узнал о графах. И в принципе пока не понимаю для чего и как мы будем их использовать. Надеюсь в следующих уроках ситуация прояснится 
8 Вершины 00:14:15 27 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 15 мин. [Показать отчёт]
Научился: Ничему новому 
Сложности: Ничего сложного 
Комментарии: Все таки от русских букв в программе глаза на лоб лезут. Так что пишу на английском. Как вариант, чтобы хранить ребра можно использовать одну из рассмотренных коллекций, где ребро будет ключом, а список вершин которые он связывает коллекцией) Или я же сильно ошибаюсь. Просто пока смутно понимаю, для чего это нужно и что у нас в итоге должно получиться, так что прошу строго не судить. 
9 Рёбра 00:12:47 26 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Все больше вникаю в работу с графом как структурой данных 
Сложности: Ничего сложного 
Комментарии: Just do it) 
10 Инициация 00:11:15 26 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Пока ничему новому 
Сложности: Ничего сложного 
Комментарии: Just do it 
11 Отображение 00:16:18 26 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Ничему новому) 
Сложности: Повозился с координатами вершин) 
Комментарии: Just do it 
12 Шахматная доска 00:19:58 26 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 30 мин. [Показать отчёт]
Научился: Ничему новому) 
Сложности: Понять как работают три вложенных цикла) 
Комментарии: Just do it 
13 Широкий поиск 00:14:59 26 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Наглядно посмотрел, что значит поиск в ширь на примере связного графа 
Сложности: Ничего сложного 
Комментарии: Just do it) 
14 Широкий алгоритм 00:14:12 25 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Понял особенности перебора коллекции с помощью цикла foreach 
Сложности: Исправить ошибку) 
Комментарии: Как я понял при переборе елементов колеекции с помощью цикла foreach можно только считывать эти самые элементы но не изменять их в процессе. Поэтому в 2 методах пришлось создавать дополнительные коллекции, в которых содержаться информацию о вершинах графа и перебирать уже их. Скорее всего есть более эфективный способ решения. Посмотрим в следующих уроках :) 
15 Широкий пошаговый ход 00:11:46 25 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Вспомнил работу с событиями в .NET 
Сложности: Ничего сложного 
Комментарии: Получилось неплохо визуализировать процесс поиска в ширину на форме. Чтобы не смешивать UI и логику поиска создал класс события и передавал нужные аргументы элементу формы чтобы он менял цвет при изменение цвета вершины. А так всё как обычно. Just do it) 
16 Визуализация процесса 00:14:07 22 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Ничему новому) Удалось всё визуализировать в качестве самостоятельного задания на предыдущем уроке 
Сложности: Ничего сложного 
Комментарии: Just do it 
17 Глубокий поиск 00:09:58 22 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Поиску в глубь на примере графа) 
Сложности: Ничего сложного  
Комментарии: Just do it) 
18 Глубокий алгоритм 00:15:07 22 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 20 мин. [Показать отчёт]
Научился: Реализовывать алгоритм поиска вглубь на примере связного графа 
Сложности: Ничего сложного 
Комментарии: Just do it) 
19 ФИНАЛЬНЫЙ УРОК 22 чел. ★ 5 Done
  Отчёт отправил: 4538. Платон Решено за 5 мин. [Показать отчёт]
Научился: ... 
Сложности: Понять суть такой структуры данных как граф. Разобраться с алгоритмами поиска) 
Комментарии: Отличный курс. Узнал для себя очень многое. Повторил и вспомнил то, что когда то проходил в институте) Ну как проходил. Мимо ушей пропускал. Сейчас вот наверстываю. Очень радует эмоциональный и нескучный способ обучения. Ну тут как обычно. Спасибо Витольдовичу) Всем непроходившим этот курс яростно советую пройти и пополнить свой багаж скилов) Ну и как обычно ... Just do it 
  Итого:   19 видеоуроков общей продолжительностью 4 час. 06 мин. 22 чел. ★ 5  
  Финалисты:   Максим,   Alcatraz,   Дмитрий,   Tekashnik,   Denis,   Иван,   Дмитрий 199,   Николай,   Михаил,   Дмитрий,   Ender,   Платон,   Владимир,   Андрей Н.,   Владимир Борисенко,   Максим Лапшинов,   Permitin Alexey,   Новопашин Владимир,   Максим Саратов,   Алексей В.,   Den Andreevich,   Елена .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: На данном курсе я ознакомился и реализовал на практике алгоритмы обхода вершин графа (заодно систематизировал свои первоначальные знания о графах, которые немного подзабыл). Очень эффектно выглядит, когда реализованный функционал в коде становится наглядным и визуализируется. Так лучше понимаешь то, что не смог понять в тексте алгоритма и в коде.
Трудности: Самым сложным все равно остается понимание работы с итераторами (IEnumerable, IEnumerator, yield). До конца не уверен, что смогу сам реализовать такой подход в другом проекте (решается только практикой).
Меня очень интересует тема визуализации данных и процессов. Очень хочется понять как например реализуется графический эквалайзер в проигрывателях музыки (прыгающие уровни ползунков, не говоря уже о полноценных образах)
Научился: Работать со встроенными классами списков, такими как: List, ListDictionary, HashTable, HybridTable. Также основам работы с графами, их заполнению и перебору с использованием списков.
Трудности: Большое количество новой терминологии и понятий, enumerable и иже с ним. HashTable тоже сложный объект, т.к. там еще хеш-функция внутри и много математики, о которой мало что известно.
Очень полезный курс. Учитывая, что большинство программ так или иначе работают со списками, то, чтобы не изобретать велосипеды с массивами, хорошо бы сразу знать какие уже классы разработаны.