3.2 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d8256367417b2b2512c77 | Список суміжності | 1 | 301620 | adjacency-list |
--description--
Графи можуть бути представлені різними способами. Тут ми опишемо один з них. Він має назву список суміжності. По суті, список суміжності - це маркований список, де зліва - вузол, а справа перераховуються всі інші вузли, з якими з'єднаний поточний вузол. Нижче наведено представлення списку суміжності.
Node1: Node2, Node3
Node2: Node1
Node3: Node1
Вищенаведений приклад є неорієнтованим графом, оскільки Node1
з'єднаний з Node2
та Node3
, і ця інформація відповідає з'єднанню Node2
та Node3
. Список суміжності для орієнтованого графу означатиме, що кожен рядок списку показує напрямок. Якби наведений вище граф був орієнтованим, то рядок Node2: Node1
означав би, що ребро вказує напрямок від Node2
до Node1
. Ми можемо представити згаданий вище неорієнтований граф у вигляді списку суміжності, помістивши його в об'єкт 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']
};