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

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Коллекция графов / Глубокий поиск

  • На этом уроке мы познакомимся с алгоритмом поиска вглубь.
    Мы проработаем весь алгоритм на конкретном примере.
    Самостоятельное задание - выбрать граф и также с ним поработать.
  • Дата отправки отчёта: 29 июля 2019 г.
  • Задание выполнено: за 2 дня 20 час. 39 мин.
  • Чему научился: в общем я в принципе сам и сделал уже метод
    Особо строго не судите:

    // Поиск в глубину запускаем рекурсию
            public Queue<int> SearchPachDepth()
            {
                // останавливается !!!?
                graf.SetColorAll(Graf.EnumColor.White);

                if (stackPassed.Count != 0)
                {
                    stackPassed.Clear();
                }

                // если элемент _StartInt Белый значит делаем его Красный цвет или пропускаем
                AddRedtoStack(0);

                // Рекурсия
                return SearchPachDepth(0);
            }

            // Поиск в глубину
            public Queue<int> SearchPachDepth(int _StartInt)
            {
                // если элемент _StartInt Красный делаем его Черным и удаляем и возвращаем
                _StartInt = RemoveBlackFromStack(_StartInt);

                // Собственная очередь прохода по вершинам
                queuePassed.Enqueue(_StartInt);

                foreach (int NestedVertex in graf.TempEdge.ReturnAllEdgeL(_StartInt))
                {
                    AddRedtoStack(NestedVertex);
                }

                if (stackPassed.Count == 0)
                {
                    // Выход из рекурсии
                }
                else
                {
                    // Запускаем рекурсию
                    SearchPachDepth(stackPassed.Peek());
                }

                if (queuePassed != null)
                {
                    return queuePassed;
                }
                else
                {
                    return null;
                }
            }

            void AddRedtoStack(int _int)
            {
                if (graf.GetColorVertex(_int).Equals(Graf.EnumColor.White))
                {
                    // окрашиваем в Red
                    graf.SetColor(_int, Graf.EnumColor.Red);

                    // добавляем в стэк
                    stackPassed.Push(_int);
                }
            }

            int RemoveBlackFromStack(int _int)
            {
                if (graf.GetColorVertex(_int).Equals(Graf.EnumColor.Red))
                {
                    // Окрашиваем в черный
                    graf.SetColor(_int, Graf.EnumColor.Black);

                    //Удаляем элемент из стека
                    _int = stackPassed.Pop();
                }

                // Возвращаем элемент
                return _int;
            }
  • Оценка видео-уроку:
Отчёт от 22058 за Коллекция графов / Глубокий поиск




Оцени работу

 
Сохранить страницу:

  • Отчёт оценивали:
    17947Dmitry Sinitsin+1   791Валерий Жданов+1   21090Yaroslav+1   11019Trira+1   17255Слава+1   21849Владимир+1   2146Иван+1   3506Алексей|BrisK|Кривицкий+1   8275Tekashnik+1  

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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

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


Научился: алгоритму поиска вглубь
Трудности: Не запутаться в очередности прохождения стека
Каждое состояние стека рисовать не стал, но алгоритм я усвоил. До этого разбирался уже с этими алгоритмами, но в большей степени просто копировал код, и использовал его. А теперь я увидел как действительно он работает.


Научился: Научился DFS - методу поиска вглубь.
Хорошо что BFS и DFS объяснены с точки зрения очереди и стека - все ставит в голове на свои места.