Comments 3
Начнем с простого вопроса: какую задачу решает этот алгоритм? Каково его практическое применение?
Теперь вопросы по реализации:
Теперь вопросы по реализации:
- Зачем вы делаете сначала Peek, а потом Dequeue? Dequeue возвращает элемент.
- Почему вы не помечаете «посещенность» узла прямо в нем? Минус лишний массив.
- Какой смысл операции
Convert.ToBoolean(g[u][i])?
- Почему нет хотя бы одного тест-кейса на несвязанном графе?
+1
Я похожий алгоритм на golang в качестве обучалки реализовывал. Правда с многопоточностью.
-1
Построчный перевод e-maxx.ru/algo/bfs c++ на c#?
Заметно например по тому что на c# Dequeue уже позвращает результат в отличии от queue::pop в оригинале, но порядок линий сохранился после построчной замены.
Ненужное v = i; которое видимо сохранилось потому что в оригинале было to = g[v][i]; (но g в отличии от оригинала хранит матрицу смежности а не список смежности, поэтому надо было поменять на to = i)
Convert.ToBoolean(g[u][i]) это тоже весело, в конце концов уже и хранить булями, либо хотя бы g[u][i] == 1 чтоб не так страшно было
Заметно например по тому что на c# Dequeue уже позвращает результат в отличии от queue::pop в оригинале, но порядок линий сохранился после построчной замены.
Ненужное v = i; которое видимо сохранилось потому что в оригинале было to = g[v][i]; (но g в отличии от оригинала хранит матрицу смежности а не список смежности, поэтому надо было поменять на to = i)
Convert.ToBoolean(g[u][i]) это тоже весело, в конце концов уже и хранить булями, либо хотя бы g[u][i] == 1 чтоб не так страшно было
+1
Sign up to leave a comment.
Поиск в ширину (BFS) на С#