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

Формула программиста
основатель — Волосатов Евгений Витольдович
Вебинар «Что тебе мешает стать крутым программистом?» начнётся через 2 дня 2 час. 34 мин.

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

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




3,000 руб.


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

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

# Название видеоурока Решило Рейтинг Доступ
1 ArrayList 00:12:16 32 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ArrayList не использовал ранее, а использовал дженерик List, но все равно полезно для понимания Узнал что при добавлении элементов, фактическое содержание увеличивается в 2 раза 
Сложности: найти изначальную емкость пустого ArrayList = 16  
Комментарии: LastIndexOf возвращает номер позиции 
2 List 00:12:57 32 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ходить по коллекции используя свойство перечислителя MoveNext 
Сложности: не было 
Комментарии: попробовал использовать метод ConvertAll, работает через делегат Converter. сконвертировал исходный лист из int в long 
3 Array vs List 00:11:04 31 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: наглядно увидел в сравнении скорость работы массива, arrayList и типизированного листа массив самый быстрый(но у него есть преимущество, задан размер ), второй типизированный лист и последний - arrayList 
Сложности: не было 
Комментарии: сравнил также метод Clear, естественно работает быстрее у типизированного List 
4 ListDictionary 00:15:19 31 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: познакомился с ListDictionary, применять его можно, при небольшом кол-ве элементов. в ListDictionary хранятся ключ и значение. также можно обращаться и по индексатору  
Сложности: не было 
Комментарии: попробовал функцию Contains содержит ли коллекция искомый ключ 
5 Hashtable 00:11:56 30 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ListDictionary рекомендуется для коллекций не более 10 элементов Hashtable коллекция упорядоченная по хэш коду, рекомендуется использовать для быстрого поиска HybridDictionary до небольшого кол-ва элементов это ListDictionary, после прохождения контрольной точки (по умолчанию 8) , работает как HashTable 
Сложности: не было 
Комментарии: по добавлению элементов самый медленный ListDictionary, Hashtable c HybridDictionary примерно одинаково, но Hashtable немного-немного медленнее (пробовал при кол-ве элементов 60 000)  
6 BitArray 00:14:00 30 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: BitArray массив для хранения логических значений. Ознакомился с операндом Xor (истина 0 1, 1 0. все остальное ложно ) 5110 байт для 40 000 элементов 
Сложности: не было 
Комментарии: выбрал метод And (логическое умножение) 
7 Граф 00:13:48 30 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: стыдно сказать, но не знал что такое граф 
Сложности: не было 
Комментарии: можно хранить в дженерике Dictionary и в нем еще один дженерик List: Dictionary> dict = new Dictionary>(); заполнение очевидное , где ключ Dictionary это вершина, List связанные с ключом другие вершины 
8 Вершины 00:14:15 30 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: не совсем к теме урока относится, но попробовал благодарю занятию... в hashtable храняться object, и нельзя использовать как дженерик коллекцию 
Сложности: не было 
Комментарии: ребра можно также хранить в hashtable (вершина1, вершина2 ) только при поиске проверять содержания не только по ключу но и менять местами на значение, т.е. чтоб не дублировать ребра 
9 Рёбра 00:12:47 29 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему, коллекцию в коллекции предложил использовать на предыдущем уроке Dictionary
Сложности: не было 
Комментарии: при заполнении графа дописал новый метод, который добавляет к одной вершине несколько вершин (из int массива) 
10 Инициация 00:11:15 29 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: не было, если граф правильно нарисован... 
Комментарии: все ок 
11 Отображение 00:16:18 29 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 20 мин. [Показать отчёт]
Научился: ничему 
Сложности: не было  
Комментарии: все ок 
12 Шахматная доска 00:19:58 29 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: иницилизировать шахматный граф 
Сложности: не было 
Комментарии: все ок 
13 Широкий поиск 00:14:59 29 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: проходить граф 
Сложности: не было 
Комментарии: все ок 
14 Широкий алгоритм 00:14:12 28 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: если меняется элемент коллекции и используем перечеслитель выходит exception 
Сложности: не было 
Комментарии: поменял hashtable на типизированный Dictionary у "Вершин", и в перечислителе преобразовал вершины.ToArray() стало компилироваться 
15 Широкий пошаговый ход 00:11:46 28 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 20 мин. [Показать отчёт]
Научился: ошибка исправил сам ранее 
Сложности: не было, за визуализацию не взялся 
Комментарии: все ок 
16 Визуализация процесса 00:14:07 24 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: Увидел отличный пример использования делегата, вызов функции с WindowsForm в другом невизуальном классе классе  
Сложности: все понятно 
Комментарии: все ок 
17 Глубокий поиск 00:09:58 24 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 20 мин. [Показать отчёт]
Научился: Проходить граф вглубь 
Сложности: не было 
Комментарии: все ок 
18 Глубокий алгоритм 00:15:07 24 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: впервые использовал стек 
Сложности: не было 
Комментарии: все ок 
19 ФИНАЛЬНЫЙ УРОК 24 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 10 мин. [Показать отчёт]
Научился: узнал что такое граф, научился проходить его в глубину используя очередь, в ширину используя стек. Понял что из коллекций нужно использовать типизированные (быстрее работаю, нет упаковки-распаковки) т.е. ключ-значение Dictionary, просто значение HashSet. С остальными думаю можно не заморачиваться, а для хранения логических значений использовать BitArray  
Сложности: не было 
Комментарии: отличный, доходчивый курс 
  Итого:   19 видеоуроков общей продолжительностью 4 час. 06 мин. 24 чел. ★ 5  
  Финалисты:   Максим,   Alcatraz,   Дмитрий,   Tekashnik,   Denis,   Иван,   Дмитрий 199,   Николай,   Михаил,   Дмитрий,   Ender,   Платон,   Владимир,   Андрей Н.,   Владимир Борисенко,   Максим Лапшинов,   Permitin Alexey,   Новопашин Владимир,   Максим Саратов,   Алексей В.,   Den Andreevich,   Елена,   Станислав,   Сергей Соколов .

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




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

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

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

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