Добро пожаловать в очередную из серии статей с разбором задачек, которые я задавал на собеседованиях в Google, прежде чем их запретили после утечки. С тех пор я оставил работу инженера-программиста в Google и перешёл на должность менеджера по разработке в Reddit, но у меня всё ещё осталось несколько замечательных тем. К настоящему моменту мы разобрали динамическое программирование, возведение матриц в степень и синонимичность запросов. На этот раз совершенно новый вопрос.
Читать полностью »
Рубрика «bfs»
Разбор задачи с собеседования Google: поиск соотношения
2019-09-15 в 8:34, admin, рубрики: bfs, dfs, Алгоритмы, единицы измерения, Занимательные задачки, поиск в глубину, поиск в ширину, ПрограммированиеТехническая презентация нового космического корабля Starship-BFS от SpaceX планируется в марте-апреле 2019-го года
2018-12-23 в 10:59, admin, рубрики: BFR, bfs, spacex, Starship, космонавтика
Ссылка на картинку
Благодаря товарищу Chris (Robotbeat)
у нас появилось много ответов от Илона Маска по поводу нового космического корабля от SpaceX. Так, пользователь в твиттере написал сообщение Маску с фотографиями непонятных конструкций в Техасе и спросил, есть ли что нам показать. Как оказалось, идет полным ходом сборка тестовой части Starship. Крайне удачным оказался еще другой пользователь – любитель космоса, Everyday Astronaut. Он задал много вопросов, на которые Маск ответил.
Читать полностью »
Самая быстрая и энергоэффективная реализация алгоритма BFS на различных параллельных архитектурах
2017-12-11 в 9:19, admin, рубрики: bfs, c++, CUDA, gpgpu, Graph500, KNL, Power8, Алгоритмы, высокая производительность, Параллельная обработка графов, параллельное программированиеОффтоп
В названии статьи не поместилось — данные результаты считаются таковыми по версии рейтинга Graph500. Также хотелось бы выразить благодарность компаниям IBM и RSC за предоставленные ресурсы для проведения экспериментальных запусков во время исследования.
Введение
Поиск в ширину (BFS) является одним из основных алгоритмов обхода графа и базовым для многих алгоритмов анализа графов более высокого уровня. Поиск в ширину на графах является задачей с нерегулярным доступом к памяти и с нерегулярной зависимостью по данным, что сильно усложняет его распараллеливание на все существующие архитектуры. В статье будет рассмотрена реализация алгоритма поиска в ширину (основного теста рейтинга Graph500) для обработки больших графов на различных архитектурах: Intel х86, IBM Power8+, Intel KNL и NVidia GPU. Будут описаны особенности реализации алгоритма на общей памяти, а также преобразования графа, которые позволяют достичь рекордных показателей производительности и энергоэффективности на данном алгоритме среди всех одноузловых систем рейтинга Graph500 и GreenGraph500.
Поиск в ширину (BFS) на С#
2015-02-16 в 13:12, admin, рубрики: bfs, C#, Алгоритмы, КодоБред, метки: алгоритмыСразу скажу, что статья больше подойдёт людям, желающим познакомиться с поиском в ширину, и новичкам, осваивающим программирование. К тому же, когда мне понадобился этот метод, я нигде не нашёл наглядного рабочего примера на C#.
Устно об алгоритме:
Разберём алгоритм на произвольном графе (для простоты примера рёбра не имеют вес).
Последовательность алгоритма заключается в следующим:
1. Выбирается произвольно вершина графа (отмечается серым).
2.Последовательно рассматриваются вершины (так же отмечаются серым), связанные с нашей первой вершиной (после этого она становится не серой, а чёрной).
3. Выполняется пункт 2 для отмеченных (серых) вершин до тех пор, пока все вершины не будут закрашены чёрным.
Реализация алгоритма BFS на GPU
2014-03-07 в 9:01, admin, рубрики: bfs, CUDA, gpgpu, gpu, Kepler, Nvidia, параллельное программирование, метки: bfs, CUDA, gpgpu, gpu, Kepler, NvidiaАннотация
В данной статье хочу рассказать как можно эффективно распараллелить алгоритм BFS — поиск в ширину в графе с использованием графических ускорителей. В статье будет приведен подробный анализ полученного алгоритма. Вычисления выполнялись на одном GPU GTX Titan архитектуры Kepler.
Введение
В последнее время все большую роль играют графические ускорители (GPU) в не графических вычислениях. Потребность их использования обусловлена их относительно высокой производительностью и более низкой стоимостью. Как известно, на GPU хорошо решаются задачи на структурных сетках, где параллелизм так или иначе легко выделяется. Но есть задачи, которые требуют больших мощностей и используют неструктурные сетки. Примером такой задачи является Single Shortest Source Path problem (SSSP) – задача поиска кратчайших путей от заданной вершины до всех остальных во взвешенном графе. Решение данной задачи рассмотрено мной в этой статье. Вторым примером задачи на неструктурных сетках является задача Breadth First Search (BFS) — поиска в ширину в неориентированном графе. Данная задача является основной в ряде алгоритмов на графах. Также она немного проще, чем поиск кратчайшего пути. На данный момент алгоритм BFS используется как основной тест для рейтинга Graph500. Далее рассмотрим, как можно использовать идеи решения задачи SSSP в задаче BFS. Про архитектуру GPU компании Nvidia и об упомянутых алгоритмах уже много написано, поэтому в этой статье я не стану дополнительно писать про это. Так же, надеюсь, что понятия warp, cuda блок, SMX, и прочие базовые вещи, связанные с CUDA читателю знакомы.
Читать полностью »
Графы для самых маленьких: BFS 0-1
2013-11-01 в 14:08, admin, рубрики: bfs, Алгоритмы, графы, метки: bfs, Алгоритмы, графы Добрый день, уважаемыее!
В предыдущих постах уже рассказывалось о двух алгоритмах, с помощью которых можно найти путь сквозь лабиринт: DFS и BFS. Всех, кто хочет еще немного поиздеваться над нашим лабиринтом, прошу под кат.
Читать полностью »
Графы для самых маленьких: BFS
2013-10-30 в 21:19, admin, рубрики: bfs, Алгоритмы, графы, метки: bfs, Алгоритмы, графы В предыдущем посте рассказывалось об обходе графа в глубину. Сегодня я бы хотел рассказать о не менее важном алгоритме теории графов — об обходе в ширину.
В прошлый раз мы уже научились искать какой-нибудь путь сквозь лабиринт. Всех желающих найти кратчайший путь прошу под кат.
Читать полностью »
Графы для самых маленьких: DFS и BFS
2013-10-28 в 8:49, admin, рубрики: bfs, dfs, Алгоритмы, графы, метки: bfs, dfs, графыМногие объекты окружающей действительности могут быть смоделированы с использованием графов: карта метро, лабиринт, знакомства в соцсетях, возможные ходы в настольной игре — все это графы. Самое простое и частое действие, которое можно сделать с графом — это перебрать его вершины в каком-то порядке. Под катом я бы хотел рассказать про два самых известных алгоритма на графах — об обходах в глубину и в ширину.