3.4 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d8256367417b2b2512c77 | Список суміжності | 1 | 301620 | adjacency-list |
--description--
Графи можуть бути представлені різними способами. У цьому завданні розглянемо один з них, який називають списком суміжності. По суті, список суміжності — це маркований список, зліва якого є вершина, а справа перераховуються всі інші вершини, з якими вона з’єднана. Нижче наведено представлення списку суміжності.
Вершина1: Вершина2, Вершина3
Вершина2: Вершина1
Вершина3: Вершина1
Вищенаведений приклад є неорієнтованим графом, оскільки Вершина1 з’єднана з Вершина2 та Вершина3, і ця інформація відповідає з’єднанню Вершина2 та Вершина3. Список суміжності для орієнтованого графа означатиме, що кожен ряд списку показує напрямок. Якби наведений вище граф був орієнтованим, то Вершина2: Вершина1 означало б, що ребро вказує напрямок від Вершина2 до Вершина1. Ми можемо представити згаданий вище неорієнтований граф у вигляді списку суміжності, помістивши його в об’єкті JavaScript.
var undirectedG = {
Node1: ["Node2", "Node3"],
Node2: ["Node1"],
Node3: ["Node1"]
};
Також його можна легше представити у вигляді масиву, де мітками вершин є числа, а не рядки.
var undirectedGArr = [
[1, 2], // Node1
[0], // Node2
[0] // Node3
];
--instructions--
Створіть соціальну мережу у вигляді неорієнтованого графа з 4 вершинами/людьми, яких звати James, Jill, Jenny та Jeff. Між James та Jeff, Jill та Jenny, Jeff та Jenny існують ребра/зв’язки.
--hints--
undirectedAdjList має містити лише чотири вершини.
assert(Object.keys(undirectedAdjList).length === 4);
Між Jeff та James має бути ребро.
assert(
undirectedAdjList.James.indexOf('Jeff') !== -1 &&
undirectedAdjList.Jeff.indexOf('James') !== -1
);
Між Jill та Jenny має бути ребро.
assert(
undirectedAdjList.Jill.indexOf('Jenny') !== -1 &&
undirectedAdjList.Jenny.indexOf('Jill') !== -1
);
Між Jeff та Jenny має бути ребро.
assert(
undirectedAdjList.Jeff.indexOf('Jenny') !== -1 &&
undirectedAdjList.Jenny.indexOf('Jeff') !== -1
);
--seed--
--seed-contents--
var undirectedAdjList = {};
--solutions--
var undirectedAdjList = {
James: ['Jeff'],
Jill: ['Jenny'],
Jenny: ['Jill', 'Jeff'],
Jeff: ['James', 'Jenny']
};