public Camino getShortestPath(Nodo origen, Nodo destino)
    {
        if(!this.containsNodo(origen) || !this.containsNodo(destino))
            throw new IllegalArgumentException("Nodo no contenido en el grafo");

        ArrayList<Camino> caminos = new ArrayList<Camino>();
        caminos.add(new Camino(origen)); // Incializa los caminos
        // Busqueda

        while(!caminos.isEmpty())
        {
            Camino camino = caminos.remove(0);
            Nodo ultimo = camino.getFinal();
            Iterator<Nodo> hijos = this.childrenOf(ultimo).iterator();
            while(hijos.hasNext())
            {
                Nodo siguiente = hijos.next();
                if(siguiente.equals(destino)){
                    camino.add(siguiente);
                    return camino;
                }
                else if(!camino.contains(siguiente)){
                    Camino nuevoCamino = camino.clone();
                    nuevoCamino.add(siguiente);
                    caminos.add(nuevoCamino);
                }

            }
        }

        throw new IllegalArgumentException("Nodos no conectados en el grafo");
    }