Ну, один из методов - попытаться сгенерировать случайный граф, который удовлетворяет ограничениям, подобным планарному графу (например, ребра <= 3 * вершин - 6), и проверить, является ли он плоским за O (n) время, используя Тарьянаалгоритм проверки на плоскостность.Если оно не плоское, генерируйте снова.Не уверен, насколько эффективно это будет для вершин 300K !, хотя (или если это даже даст вам графы с одинаковой вероятностью). </p>
Существует некоторая литература по созданию плоских графов, я мог бы найти одну статью здесь: Создание помеченных плоских графиков , которые, очевидно, ожидали O (n ^ 4) времени работы, и, возможно, также не стоили бы этого.Возможно, ссылки там помогут вам отыскать что-то, что может вам помочь.
Удачи!