Para cada conjunto finito de números reales, $S =\{a_1,a_2,...,a_n\}$ que se cumple la condición de que el problema, le corresponde un grafo dirigido $G_S$ con la siguiente construcción:
Cada elemento de a $S$ se asocia con un vértice en $G_S$, de acuerdo a la regla de que si $a_i \in S $$ V_i \in G_S$. Un vértice $V_i \in G_S$ está conectado a otro vértice $V_k \in G_S$ por una arista $E_j$ si y sólo si $a_i + a_j = a_k$. Claramente, la existencia de un ciclo cerrado en el $G_s$ sin repetir los bordes corresponde a una suma cero subconjunto de $S$.
Un hecho útil, lo que yo me refiero como el "vértice de reemplazo truco", es que si $V_i \rightarrow(E_j)\rightarrow V_k$, entonces por la definición de la propiedad de $S$, también tenemos $V_j \rightarrow(E_i)\rightarrow V_k$.
He de decir que un camino de $P$ es "bien comportado" si no índice de $S$ aparece más de una vez en $P$, a menos que se produzca en un vértice adyacente/edge par de la forma $ \cdots \rightarrow V_i \rightarrow (E_i) \rightarrow \cdots$
Elegir un vértice arbitrario $V_a \in G_S$, y elegir un arbitrario entrante borde a $V_a$, decir $E_b$. A continuación, el camino inicial es:
$$P=V_c \rightarrow (E_b) \rightarrow V_a $$
A menos $0 \in S$, entonces cada posible camino inicial, se porta bien.
Añadir un vértice/edge par de a $P$ si $P$ es todavía bien comportado, a continuación, repita hasta que no lo es. Debido a la definición de la propiedad de $S$, siempre es posible encontrar otro vértice para agregar a cualquier ruta, y desde $S$ es finito, este proceso debe, finalmente, terminar.
$Claim:$ Si $P$ se porta bien, pero $P'=V_y \rightarrow (E_x) \rightarrow P$ es, $P'$ o bien contiene un ciclo cerrado con no repetir los bordes, o puede ser transformado en uno que hace aplicando el vértice de reemplazo truco.
$Proof:$ Si el índice de $x$ no aparece en $P$ pero $y$ hace, entonces podemos usar el vértice de reemplazo truco para asegurarse de que $V_y \in P$, y obtener así un ciclo cerrado, que por virtud de la $P$ se portaron bien, está garantizado que no tienen repita los bordes:
$$V_y \rightarrow E_x \rightarrow \cdots \rightarrow V_y$$
Si el índice de $y$ no aparece en $P$ pero $x$ hace, entonces de igual manera, utilizamos el vértice de reemplazo truco para obtener:
$$V_x \rightarrow E_y \rightarrow \cdots \rightarrow V_x$$
En el caso de que $x=y$, obtenemos:
$$V_x \rightarrow E_x \rightarrow \cdots \rightarrow V_x$$
De lo contrario, en el caso de que los índices de $x$ $y$ ambos aparecen en $P$, elija el elemento con índice de $x$ o $y$, lo que primero ocurra en $P$, y si ese elemento es un borde, que la convierten en un vértice usando el truco. A continuación, retire todos los elementos de a $P$ que se producen después de que el vértice, y volver a uno de los casos anteriores, donde sólo uno de los índices que aparece en $P$.
EDIT: Esto es una actualización masiva/reescritura de una pendiente de respuesta de la mina de años atrás. Mis disculpas si esto hace que los comentarios de edad, ya no es relevante.