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

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

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

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




3,000 руб.


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

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

# Название видеоурока Решило Рейтинг Доступ
1 ArrayList 00:12:16 30 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 20 мин. [Показать отчёт]
Научился: Узнал о коллекции ArrayList  
Сложности: Вроде ничего 
Комментарии: Узнал впервые о методе вставки insert, до этого только удалял элементы:) 
2 List 00:12:57 30 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 20 мин. [Показать отчёт]
Научился: Вспомнил списки и работу с ними.  
Сложности: Сумма...  
Комментарии: Нашёл метод RemoveAt - удаление по индексу. Не могу понять, почему Sum в List не работает??  
3 Array vs List 00:11:04 29 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 20 мин. [Показать отчёт]
Научился: Научился сравнивать коллекции.  
Сложности: Ничего :)  
Комментарии: Заодно и горячие клавиши повторил :)  
4 ListDictionary 00:15:19 29 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 20 мин. [Показать отчёт]
Научился: Узнал о коллекция типа ListDictionary и посмотрел некоторые свойства.  
Сложности: Вроде всё было понятно.  
Комментарии: Чем-то похоже на ключи в SQL, если мне не изменяет память, constraint... А для эксперимента любуюсь Remove :)  
5 Hashtable 00:11:56 27 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Научился самостоятельно экспериментировать и сравнивать коллекции на практике.  
Сложности: Ждать.  
Комментарии: Скажу честно: мне лень было напрягать мозги и думать над этим, однако желание не стать посредственным программистом победило. Вот что накалякал: Я никак не мог понять, как создать много коллекций. Только потом вспомнил, что массив всегда придёт в помощь. Ну да ладно, с этим справился. Потом всё пошло отлично, но вот на скрине получилось так, что 100000 коллекций LD создаётся 200мс, а одна из 100000 элемнтов - минуту. МИНУТУ, КАРЛ! То ли я ошибся в исходнике (прикрепляю его), то ли коллекция LD быстрая только при малом кол-ве элементов? Ну а так, проэкспериментировав, можно сделать вывод, что с малым кол-вом элементов лучше LD не найти, в то же время HD-коллекции удобны при бОльшем кол-ве элементов. И ещё: я не понял третий этап, который Вы говорили на видео. Что от меня нужно? А так эксперимент понравился, спасибо за урок!  
6 BitArray 00:14:00 27 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 20 мин. [Показать отчёт]
Научился: Познакомился с коллекцией bitArray и закрепил знания по логическим операциям.  
Сложности: Вспомнить операции 
Комментарии: Ну наконец-то я понял Xor, а то с института не знал её. Да и логические действия забывать нельзя. Ах да, после этого урока охота пользоваться массивами пропадает:) А для эксперимента я просто вспомнил and и or :) 
7 Граф 00:13:48 27 чел. ★ 4.9 Done
  Отчёт отправил: 6925. Артём Решено за 20 мин. [Показать отчёт]
Научился: Вспомнил графы.  
Сложности: Думать над хранением их 
Комментарии: На курсе Комбинаторика была задача о выходе из лабиринта, где использовались очереди. Правда, тогда я о них не знал, но попробую с их помощью. А за идею графа спасибо сестре,которая попросила объяснить задачу рл геометрии :) 
8 Вершины 00:14:15 27 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 15 мин. [Показать отчёт]
Научился: Повторил итераторы и волшебное слово yield  
Сложности: yield... 
Комментарии: Dictionary подошёл бы и хранить там две вершины через массив (вершина 1, вершина2), соединяющие ребро, и длину его.  
9 Рёбра 00:12:47 26 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 15 мин. [Показать отчёт]
Научился: Научился описывать коллекцию рёбер и понял, почему надо Dictionary 
Сложности: вроде ничего  
Комментарии: простое неправильное решение :)  
10 Инициация 00:11:15 26 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 15 мин. [Показать отчёт]
Научился: Повторил динамическое создание элементов. 
Сложности: Додуматься до вывода 
Комментарии: Самое простое и неправильное решение - цикл. Вот не хочется писать 6 раз AddLabel и вычислять координаты, но похоже, придётся... P.S. возникла идея матрицы смежности составить :) Жаль, что на уровне идеи это и осталось :(  
11 Отображение 00:16:18 26 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 20 мин. [Показать отчёт]
Научился: Повторил работу с графикой.  
Сложности: не сразу вспомнил, что координата метки - верхний левый угол 
Комментарии: А можно ли метки в виде круга создать? Кстати, по поводу линий: уж очень попахивает Bitmap, pictureBox. Можно ли так использовать?  
12 Шахматная доска 00:19:58 26 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 30 мин. [Показать отчёт]
Научился: Научился создавать шахматный граф.  
Сложности: Не запутаться в циклах.  
Комментарии: Не получается скрин сделать: как только нажимаю альт, сразу стираются линии :(  
13 Широкий поиск 00:14:59 26 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 20 мин. [Показать отчёт]
Научился: Повторил алгоритм поиска вширь. 
Сложности: Вспомнить очередь. 
Комментарии: Идём дальше :)  
14 Широкий алгоритм 00:14:12 25 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Вспомнил алгоритм поиска вширь через очередь.  
Сложности: Найти ошибку.  
Комментарии: Ну раз мы изменяли коллекцию, то почему бы там, где итератор, не сделать пребор, как в массиве - по индексу?  
15 Широкий пошаговый ход 00:11:46 25 чел. ★ 5 Done
  Отчёт отправил: 6925. Артём Решено за 15 мин. [Показать отчёт]
Научился: Повторил пошаговое исследование программы.  
Сложности: Ничего.  
Комментарии: Теперь пора визуализацию делать :)  
16 Визуализация процесса 00:14:07 22 чел. ★ 5 Open
17 Глубокий поиск 00:09:58 22 чел. ★ 5 Open
18 Глубокий алгоритм 00:15:07 22 чел. ★ 5 $
19 ФИНАЛЬНЫЙ УРОК 22 чел. ★ 5 $
  Итого:   19 видеоуроков общей продолжительностью 4 час. 06 мин. 22 чел. ★ 5  
  Финалисты:   Максим,   Alcatraz,   Дмитрий,   Tekashnik,   Denis,   Иван,   Дмитрий 199,   Николай,   Михаил,   Дмитрий,   Ender,   Платон,   Владимир,   Андрей Н.,   Владимир Борисенко,   Максим Лапшинов,   Permitin Alexey,   Новопашин Владимир,   Максим Саратов,   Алексей В.,   Denchik,   Елена .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: узнал что такое граф, научился проходить его в глубину используя очередь, в ширину используя стек. Понял что из коллекций нужно использовать типизированные (быстрее работаю, нет упаковки-распаковки) т.е. ключ-значение Dictionary, просто значение HashSet. С остальными думаю можно не заморачиваться, а для хранения логических значений использовать BitArray
Трудности: не было
отличный, доходчивый курс
Научился: Познакомился с применением на практике различных коллекций (ArrayList, List, ListDictionary, Hashtable и HybridDictionary), а также их встроенных методов . Выяснил, что по скорости обработки различных комбинаций большого кол-ва эл-ов ListDictionary на порядок уступил по времени отработки двум другим классам : Hashtable и HybridDictionary, которые показали практически одинаковые результаты . Применять битовый массив BitArray, а также некоторые его методы на практике . Получил представление о графе и его разновидностях, методах представления, применять русские названия методов , перечисление , узнал об итераторах (yield return). Формировать граф в виде шахматной доски либо опр-ой формы и выводить его на экран с последующим поиском пути Вширь и Вглубь . При этом узнал о специфике применения foreach() и HashTable().
Трудности: При выполнении самостоятельных заданий определиться с вариантом хранения графа { цвета вершин, смежные вершины }, найти причину возникновения Exception-a при отработке foreach() и HashTable(), разобраться с общей логикой работы программы.
Хочу от всей души поблагодарить за коллекционный курс графопостроения ) ! Материала для применения и размышлений - более чем ! После данного курса планирую закончить "Бинарная жизнь" и переключиться на курсы "Игра Сокобан", "Графоциклы", "Итератор" . Конечно же в планах пройти все предложенные курсы на данный момент - главное двигаться дальше .