Files

2.5 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d8256367417b2b2512c77 Lista di adiacenza 1 301620 adjacency-list

--description--

I grafici possono essere rappresentati in modi diversi. Qui descriviamo un modo, che è chiamato una lista di adiacenza. Una lista di adiacenza è essenzialmente un elenco puntato dove il lato sinistro è il nodo e il lato destro elenca tutti gli altri nodi a cui è collegato. Di seguito è riportata una rappresentazione di una lista di adiacenza.

Node1: Node2, Node3
Node2: Node1
Node3: Node1

Quello sopra è un grafico non orientato perché Node1 è connesso a Node2 e Node3, e tali informazioni sono coerenti con le connessioni Node2 e Node3. La lista di adiacenza per un grafico orientato significherebbe che ogni riga della lista mostra la direzione. Se quanto sopra fosse orientato, allora Node2: Node1 significherebbe che l'arco orientato sta puntando da Node2 verso Node1. Possiamo rappresentare il grafo non orientato qui sopra come una lista di adiacenza inserendolo in un oggetto JavaScript.

var undirectedG = {
  Node1: ["Node2", "Node3"],
  Node2: ["Node1"],
  Node3: ["Node1"]
};

Questo può anche essere rappresentato più semplicemente come un array in cui i nodi hanno solo numeri invece di etichette di stringa.

var undirectedGArr = [
  [1, 2], // Node1
  [0],    // Node2
  [0]     // Node3
];

--instructions--

Crea un social network come grafo non orientato con 4 nodi/persone di nome James, Jill, Jenny, e Jeff. Ci sono lati/rapporti tra James e Jeff, Jill e Jenny, e Jeff e Jenny.

--hints--

undirectedAdjList dovrebbe contenere solo quattro nodi.

assert(Object.keys(undirectedAdjList).length === 4);

Ci dovrebbe essere un arco tra Jeff e James.

assert(
  undirectedAdjList.James.indexOf('Jeff') !== -1 &&
    undirectedAdjList.Jeff.indexOf('James') !== -1
);

Ci dovrebbe essere un arco tra Jill e Jenny.

assert(
  undirectedAdjList.Jill.indexOf('Jenny') !== -1 &&
    undirectedAdjList.Jenny.indexOf('Jill') !== -1
);

Dovrebbe esserci un arco tra Jeff e 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']
};