Как задать граф в языке C++ (Призма Мебиуса)

248
15 декабря 2017, 03:25

Здравствуйте, как задать такой граф в языке C++?

Далее всюду n — натуральное число. Назовем граф с множествами вершин

V = {0, 1, 2, . . ., 2n−1}

и ребер

E = {(i, i + 1) | i = 0, 2n − 1, i четное} ∪ {(i, i + 2) | i = 0, 2n − 1} 

(сложение по модулю 2n) призмой P(n).

Для представления использую матрицу смежности.

Answer 1

Ну, у вас есть какая-то матрица смежности, типа

vector<vector<int>> V(2*n, vector<int>(2*n,0));

Дальше - просто циклами:

{(i, i+1) | i = 0, 2n − 1, i четное}

for(int i = 0; i < 2*n; ++i)
{ 
    if (i%2) continue;  // нечетное
    V[i%(2*n)][(i+1)%(2*n)] = 1;
    // Если не ориентированный -
    V[(i+1)%(2*n)][i%(2*n)] = 1;
}

{(i, i+2) | i = 0, 2n − 1} - аналогично

for(int i = 0; i < 2*n; ++i)
{ 
    V[i%(2*n)][(i+2)%(2*n)] = 1;
    // Если не ориентированный -
    V[(i+2)%(2*n)][i%(2*n)] = 1;
}

"По-моему, так" (с) Пух

READ ALSO
Что такое компаратор?

Что такое компаратор?

В вопросе Поиск самой длинной строки я увидел слово компаратор, но поскольку я мало понимаю в программировании, то я не знаю что это может...

257
Unit test для синглтона

Unit test для синглтона

Всем привет! Понимаю, что сам вопрос звучит довольно глупо, но столкнулся с такой задачейНужно сделать Юнит тесты для класса являющимся синглтоном,...

198
Как данные отослать в нужный Endpoint

Как данные отослать в нужный Endpoint

Нужно отослать данные Usb девайсу в нужный EndpointРаботаю с устройством как с файлом, WriteFile ReadFile

200
Зачем нужен класс Void?

Зачем нужен класс Void?

Зачем в Java нужен класс javalang

229