У меня есть большой график, и я хотел бы «разбить его на части», используя подход поиска в ширину. То есть я случайным образом выбираю начальную вершину, а затем выполняю BFS, пока у меня не останется граф с (например) 100 вершинами. Это процесс, который я планирую повторять несколько раз, чтобы в конечном итоге у меня было несколько разных подграфов моего большого графа. На данный момент, вот как я кодирую это в R (это просто пример, мой граф не является кольцом).
y <- make_ring(1000)
bfsy <- bfs(y, root=1, "all", order=TRUE)
suby <- bfsy$order[1:100]
newgraph = induced.subgraph(y, suby)
Очевидно, это неэффективно, так как я выполняю всю BFS и мне нужно всего 100 вершин. Любые намеки на то, как кодировать это лучше? И какие-нибудь намеки на то, как я могу еще больше рандомизировать этот процесс, рандомизируя порядок очереди на каждом новом этапе (это моя следующая проблема, которую нужно решить, ха)? Ссылки на область учебников / документов всегда приветствуются.