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

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

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

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




Хочу купить!

Купить в рассрочку за мегахеши

Цена: 800 p.


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

# Название видеоурока Решило Рейтинг Доступ
1 ArrayList 00:12:16 41 чел. ★ 5 Done
  На этом уроке мы обсудим план занятий,
вспомни былые времена голых массивов,
и выясним, зачем же нужны коллекции.
Начнём знакомство с самой простой
коллекции ArrayList и немного
поэкспериментируем с ней.

Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Узнал о коллекции ArrayList  
Сложности: Вроде ничего 
Комментарии: Узнал впервые о методе вставки insert, до этого только удалял элементы:) 
2 List 00:12:57 41 чел. ★ 5 Done
  На этом уроке мы поработаем с типизированной коллекцией List.
Обсудим её преимущества, по сравнению с ArrayList,
добавим несколько элементов, отсортируем их и даже найдём их сумму.
Перебор элементов мы организуем двумя разными способами -
через итератор и обычным foreach().
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Вспомнил списки и работу с ними.  
Сложности: Сумма...  
Комментарии: Нашёл метод RemoveAt - удаление по индексу. Не могу понять, почему Sum в List не работает??  
3 Array vs List 00:11:04 40 чел. ★ 5 Done
  На этом уроке мы сравним эффективность использования
ArrayList, List<> и простого массива.
Победителем окажется типизированная коллекция List<>.
Очень интеренсо сравнивать эффективность,
нам в этом поможет флагманский класс Stopwatch.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Научился сравнивать коллекции.  
Сложности: Ничего :)  
Комментарии: Заодно и горячие клавиши повторил :)  
4 ListDictionary 00:15:19 40 чел. ★ 5 Done
  На этом уроке мы начнём рассматривать три класса,
которые похожи по функциональности, но очень сильно отличаются
по реализации, это: ListDictionary, Hashtable, HybridDictionary.
Эти коллекции хранят пару значений: ключ - значение.
Они нетипизированные и работают с объектами.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Узнал о коллекция типа ListDictionary и посмотрел некоторые свойства.  
Сложности: Вроде всё было понятно.  
Комментарии: Чем-то похоже на ключи в SQL, если мне не изменяет память, constraint... А для эксперимента любуюсь Remove :)  
5 Hashtable 00:11:56 39 чел. ★ 4.9 Done
  На этом уроке мы поработаем с Hashtable - каким именно
образом в неё складываются значения и почему она будет
работать, даже если хеш-функция вернёт одинаковые значения.
Также мы увидим, что порядок элементов путается,
а сами значения хранятся в очень хитром виде.
В конце урока мы сделаем всё то же самое с гибридным классом.
Самостоятельное задание: сравнить скорость работы этих коллекций.
1 этап: создать МНОГО коллекций по 8 и по 9 элементов (ОТДЕЛЬНО).
2 этап: создать ОДНУ коллекцию из ОГРОМНОГО количества элементов.
Подвести итоги и в отчёте написать вывод.
Отчёт отправил: 6925. Артём Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Научился самостоятельно экспериментировать и сравнивать коллекции на практике.  
Сложности: Ждать.  
Комментарии: Скажу честно: мне лень было напрягать мозги и думать над этим, однако желание не стать посредственным программистом победило. Вот что накалякал: Я никак не мог понять, как создать много коллекций. Только потом вспомнил, что массив всегда придёт в помощь. Ну да ладно, с этим справился. Потом всё пошло отлично, но вот на скрине получилось так, что 100000 коллекций LD создаётся 200мс, а одна из 100000 элемнтов - минуту. МИНУТУ, КАРЛ! То ли я ошибся в исходнике (прикрепляю его), то ли коллекция LD быстрая только при малом кол-ве элементов? Ну а так, проэкспериментировав, можно сделать вывод, что с малым кол-вом элементов лучше LD не найти, в то же время HD-коллекции удобны при бОльшем кол-ве элементов. И ещё: я не понял третий этап, который Вы говорили на видео. Что от меня нужно? А так эксперимент понравился, спасибо за урок!  
6 BitArray 00:14:00 39 чел. ★ 4.9 Done
  На этом уроке мы поработаем с интересной коллекцией BitArray,
которая позволяет компактно хранить большие массивы двоичных данных.

Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Познакомился с коллекцией bitArray и закрепил знания по логическим операциям.  
Сложности: Вспомнить операции 
Комментарии: Ну наконец-то я понял Xor, а то с института не знал её. Да и логические действия забывать нельзя. Ах да, после этого урока охота пользоваться массивами пропадает:) А для эксперимента я просто вспомнил and и or :) 
7 Граф 00:13:48 39 чел. ★ 4.9 Done
  На этом уроке я дам определение графа своими словами,
всё, что запомнил с момента учёбы в университете.
В конце урока мы зададимся вопросом -
как хранить граф в памяти компьютера.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Вспомнил графы.  
Сложности: Думать над хранением их 
Комментарии: На курсе Комбинаторика была задача о выходе из лабиринта, где использовались очереди. Правда, тогда я о них не знал, но попробую с их помощью. А за идею графа спасибо сестре,которая попросила объяснить задачу рл геометрии :) 
8 Вершины 00:14:15 39 чел. ★ 4.9 Done
  На этом уроке мы начнём создавать класс Граф
для хранения графа и работы с ним.
На уроке мы создадим всё, что касается вершин.
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Повторил итераторы и волшебное слово yield  
Сложности: yield... 
Комментарии: Dictionary подошёл бы и хранить там две вершины через массив (вершина 1, вершина2), соединяющие ребро, и длину его.  
9 Рёбра 00:12:47 38 чел. ★ 4.9 Done
  На этом уроке мы содадим колекцию для хранения рёбер.
Опишем методы добавления рёбер и перебора смежных вершин.
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Научился описывать коллекцию рёбер и понял, почему надо Dictionary 
Сложности: вроде ничего  
Комментарии: простое неправильное решение :)  
10 Инициация 00:11:15 38 чел. ★ 5 Done
  На этом уроке мы создадим экземпляр нашего графа
и добавим в него все его элементы по образцу.
Самостоятельное задание - вывести граф на экран.
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Повторил динамическое создание элементов. 
Сложности: Додуматься до вывода 
Комментарии: Самое простое и неправильное решение - цикл. Вот не хочется писать 6 раз AddLabel и вычислять координаты, но похоже, придётся... P.S. возникла идея матрицы смежности составить :) Жаль, что на уровне идеи это и осталось :(  
11 Отображение 00:16:18 38 чел. ★ 5 Done
  На этом уроке мы выведем граф на экран: и вершины и рёбра.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил работу с графикой.  
Сложности: не сразу вспомнил, что координата метки - верхний левый угол 
Комментарии: А можно ли метки в виде круга создать? Кстати, по поводу линий: уж очень попахивает Bitmap, pictureBox. Можно ли так использовать?  
12 Шахматная доска 00:19:58 38 чел. ★ 5 Done
  На этом уроке мы создадим граф в виде Шахматной доски.
И организуем её вывод на экран.
Отчёт отправил: 6925. Артём Выполнено за 30 мин. [Показать отчёт]
Научился: Научился создавать шахматный граф.  
Сложности: Не запутаться в циклах.  
Комментарии: Не получается скрин сделать: как только нажимаю альт, сразу стираются линии :(  
13 Широкий поиск 00:14:59 38 чел. ★ 5 Done
  На этом уроке мы познакомимся с алгоритмом поиска вширь.
Мы проработаем весь алгоритм на конкретном примере.
Самостоятельное задание - выбрать граф и также с ним поработать.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил алгоритм поиска вширь. 
Сложности: Вспомнить очередь. 
Комментарии: Идём дальше :)  
14 Широкий алгоритм 00:14:12 36 чел. ★ 5 Done
  На этом уроке мы напишем алгоритм поиска вширь.
Однако, запустить его не удастся. Почему?
Это вам самостоятельное задание, разобраться
в причине, и найти способ, как это исправить.
Отчёт отправил: 6925. Артём Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Вспомнил алгоритм поиска вширь через очередь.  
Сложности: Найти ошибку.  
Комментарии: Ну раз мы изменяли коллекцию, то почему бы там, где итератор, не сделать пребор, как в массиве - по индексу?  
15 Широкий пошаговый ход 00:11:46 35 чел. ★ 5 Done
  На этом уроке мы исправишм ошибку из прошлого урока
и пройдёмся пошагово по всему алгоритму.
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Повторил пошаговое исследование программы.  
Сложности: Ничего.  
Комментарии: Теперь пора визуализацию делать :)  
16 Визуализация процесса 00:14:07 30 чел. ★ 5 $
  На этом уроке мы создадим делегат "Покраска"
и через него реализуем отображение процесса.
17 Глубокий поиск 00:09:58 30 чел. ★ 5 $
  На этом уроке мы познакомимся с алгоритмом поиска вглубь.
Мы проработаем весь алгоритм на конкретном примере.
Самостоятельное задание - выбрать граф и также с ним поработать.
18 Глубокий алгоритм 00:15:07 30 чел. ★ 5 $
  На этом уроке мы напишем алгоритм поиска вглубь.
Вернее сказать - скопипастим. И пофилософствуем.
На этом же уроке посмотрим, как он работает.
19 ФИНАЛЬНЫЙ УРОК 30 чел. ★ 5 $
  Поздравляю с окончанием курса!
Оставь отзыв об этом курсе.

Какой курс ты будешь проходить следующим?
  Итого:   19 видеоуроков общей продолжительностью 4 час. 06 мин. 30 чел. ★ 4.98  
  Финалисты:   Максим,   Alcatraz,   Дмитрий,   Tekashnik,   Denis,   Иван,   Дмитрий 199,   Николай,   Михаил,   Дмитрий,   Ender,   Платон,   Владимир,   Андрей Н.,   Владимир Борисенко,   Максим Лапшинов,   Permitin Alexey,   Новопашин Владимир,   Максим Саратов,   Алексей В.,   Den Andreevich,   Елена,   Станислав,   Сергей Соколов,   Yefim,   Алексей Малышев,   Александр,   Сергей,   Денис,   chokayes .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: Отличный курс. Я познакомился с новыми для себя коллекциями, узнал их основные достоинства и недостатки. А также изучил как работает стек и очередь на примере обхода графа вширь и вглубь Дальше скринсейвер по акции ну и еще что-нибудь! =)
=)


Научился: узнал про алгоритмы поиска вширь и поиска вглубь в чем их отличие и графически посмотреть как они работают
Трудности: были проблемы некоторые с опечатками и с понятием алгоритмов но когда все представили графически все стало яснее
Очень хотелось бы чтобы добавили еще консольные задачи пару несложных но с применением графов и на еще одном уроке показали как решить консольную задачу с графами и без графами показать преимущество графа и как с ним решать задачи. Раньше сам не мог не как добраться чтобы понять про графы поделал по вашему видео курсу и узнал про них Спасибо за курс.