Dati questi nodi:
a
b
c
d
e
f
g
h
E dato alcuni bordi tra i nodi come questo:
a/b/c
b/c/d
c/e
c/d/e/f
c/g
f/g
e/f/g
a/c/h
h/a/b
c/a
d/b/c
f/g/c
d/a/f
g/f
g/a/b/c
f/a/b
e/a/c
(dove a / b / c significa un bordo da a a b, e un altro da b a c), quindi questo descrive un grafico diretto.
Ecco un'altra rappresentazione più compatta per lo stesso grafico:
a(b(c(d, e(f), g)))
f(g)
e(f(g), a(c))
...
utilizzando una rappresentazione ad albero. Ma ci sono ancora dei duplicati (ad esempio a
e c
sono mostrati due volte nell'ultimo snippet).
Un altro modo per rappresentarlo è come questo:
a:b
a:c
b:c
c:d
c:e
Ma questo usa ancora più lettere rispetto allo snippet originale (primo).
Ti stai chiedendo se c'è qualcosa di meglio di questi 3 approcci per rappresentare un grafico diretto.
Forse c'è un modo per assegnare numeri alle lettere e fare tutti e 3 gli approcci come uno. O forse qualcos'altro.
Quindi quale potrebbe essere una rappresentazione utilizzando la più piccola quantità di byte?