  Motivated by systems where the information is represented by a graph, such as
neural networks, associative memories, and distributed systems, we present in
this work a new class of codes, called codes over graphs. Under this paradigm,
the information is stored on the edges of an undirected graph, and a code over
graphs is a set of graphs. A node failure is the event where all edges in the
neighborhood of the failed node have been erased. We say that a code over
graphs can tolerate $\rho$ node failures if it can correct the erased edges of
any $\rho$ failed nodes in the graph. While the construction of such codes can
be easily accomplished by MDS codes, their field size has to be at least
$O(n^2)$, when $n$ is the number of nodes in the graph. In this work we present
several constructions of codes over graphs with smaller field size. In
particular, we present optimal codes over graphs correcting two node failures
over the binary field, when the number of nodes in the graph is a prime number.
We also present a construction of codes over graphs correcting $\rho$ node
failures for all $\rho$ over a field of size at least $(n+1)/2-1$, and show how
to improve this construction for optimal codes when $\rho=2,3$.
