Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Постройка графов вершин додекаэдра и экосаэдра


Автор: AleksIvanych 13.8.2009, 05:24
САБЖ. Каждый элемент графа имеет уникальный номер от 1 до 20 (для додекаэдра) или 12 (для икосаэдра). Номера должны быть случайные.
Граф хранится в структуре вроде:
Код

struct {
   int number;
   std::vector<int> lead_to;
} rooms[n];

В данном случае number в структуре должен быть равен номеру этой структуры в массиве rooms. В lead_to номера смежных элементов графа.

Может быть, кто-нибудь знает, как это сделать? smile 

Для справки:
Додекаэдр - http://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%B4%D0%B5%D0%BA%D0%B0%D1%8D%D0%B4%D1%80
Икосаэдр - http://ru.wikipedia.org/wiki/%D0%98%D0%BA%D0%BE%D1%81%D0%B0%D1%8D%D0%B4%D1%80

Автор: Cheloveck 13.8.2009, 07:26
boost.graph

Добавлено через 38 секунд
если на C++

Автор: maxim1000 13.8.2009, 08:37
построить вручную один раз, потом случайным образом перенумеровывать вершины smile
(это если не найдётся простого и красивого способа построить алгоритмически)

Автор: AleksIvanych 13.8.2009, 16:11
Cheloveck
Можно поподробнее? Я ведь этой библиотекой никогда не пользовался, а в английской документации буду разбираться несколько дней.
Я правильно вас понял, там есть нужный мне алгоритм?

maxim1000
Ну я так и сделал в качестве workaround'а.   smile 
Но надо ведь все правильно сделать.

Автор: Cheloveck 13.8.2009, 18:49
В http://rgbooks.ru/books/557-Sik_Dzh,_Li_L,_Lamsdeyn_E_-_C++_Boost_Graph_Library_(2006)(ru) книжечке) всё толково расписано. Кроме самих графов, там есть хорошее руководство по обобщённому программированию.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)