generar_grafo(N) :-
retractall(edge(_,_)),
forall(
between(0, Limite, X),
(
X < Limite ->
;
)
).
dfs(Nodo, Visitados, Resultado) :-
member(Nodo, Visitados),
Resultado = Visitados.
dfs(Nodo, Visitados, Resultado) :-
\+ member(Nodo, Visitados),
Vecino,
edge(Nodo,Vecino),
Vecinos
),
dfs_lista(
Vecinos,
[Nodo|Visitados],
Resultado
).
dfs_lista([], Visitados, Visitados).
dfs_lista([H|T], Visitados, Resultado) :-
dfs(H, Visitados, Temp),
dfs_lista(T, Temp, Resultado).
ejecutar :-
generar_grafo(10000),
statistics(runtime,[T0|_]),
dfs(0, [], Resultado),
statistics(runtime,[T1|_]),
statistics(memory, Memoria),
length(Resultado, Cantidad),
format('Nodos visitados: ~w~n', [Cantidad]),
format('Tiempo (ms): ~w~n', [Tiempo]),
format('Memoria (bytes): ~w~n', [Memoria]).
Oi0gZHluYW1pYyBlZGdlLzIuCgpnZW5lcmFyX2dyYWZvKE4pIDotCiAgICByZXRyYWN0YWxsKGVkZ2UoXyxfKSksCiAgICBMaW1pdGUgaXMgTiAtIDEsCiAgICBmb3JhbGwoCiAgICAgICAgYmV0d2VlbigwLCBMaW1pdGUsIFgpLAogICAgICAgICgKICAgICAgICAgICAgWCA8IExpbWl0ZSAtPgogICAgICAgICAgICBZIGlzIFggKyAxLAogICAgICAgICAgICBhc3NlcnR6KGVkZ2UoWCxZKSkKICAgICAgICAgICAgOwogICAgICAgICAgICB0cnVlCiAgICAgICAgKQogICAgKS4KCmRmcyhOb2RvLCBWaXNpdGFkb3MsIFJlc3VsdGFkbykgOi0KICAgIG1lbWJlcihOb2RvLCBWaXNpdGFkb3MpLAogICAgUmVzdWx0YWRvID0gVmlzaXRhZG9zLgoKZGZzKE5vZG8sIFZpc2l0YWRvcywgUmVzdWx0YWRvKSA6LQogICAgXCsgbWVtYmVyKE5vZG8sIFZpc2l0YWRvcyksCgogICAgZmluZGFsbCgKICAgICAgICBWZWNpbm8sCiAgICAgICAgZWRnZShOb2RvLFZlY2lubyksCiAgICAgICAgVmVjaW5vcwogICAgKSwKCiAgICBkZnNfbGlzdGEoCiAgICAgICAgVmVjaW5vcywKICAgICAgICBbTm9kb3xWaXNpdGFkb3NdLAogICAgICAgIFJlc3VsdGFkbwogICAgKS4KCmRmc19saXN0YShbXSwgVmlzaXRhZG9zLCBWaXNpdGFkb3MpLgoKZGZzX2xpc3RhKFtIfFRdLCBWaXNpdGFkb3MsIFJlc3VsdGFkbykgOi0KICAgIGRmcyhILCBWaXNpdGFkb3MsIFRlbXApLAogICAgZGZzX2xpc3RhKFQsIFRlbXAsIFJlc3VsdGFkbykuCgplamVjdXRhciA6LQogICAgZ2VuZXJhcl9ncmFmbygxMDAwMCksCgogICAgc3RhdGlzdGljcyhydW50aW1lLFtUMHxfXSksCgogICAgZGZzKDAsIFtdLCBSZXN1bHRhZG8pLAoKICAgIHN0YXRpc3RpY3MocnVudGltZSxbVDF8X10pLAoKICAgIHN0YXRpc3RpY3MobWVtb3J5LCBNZW1vcmlhKSwKCiAgICBUaWVtcG8gaXMgVDEgLSBUMCwKCiAgICBsZW5ndGgoUmVzdWx0YWRvLCBDYW50aWRhZCksCgogICAgZm9ybWF0KCdOb2RvcyB2aXNpdGFkb3M6IH53fm4nLCBbQ2FudGlkYWRdKSwKICAgIGZvcm1hdCgnVGllbXBvIChtcyk6IH53fm4nLCBbVGllbXBvXSksCiAgICBmb3JtYXQoJ01lbW9yaWEgKGJ5dGVzKTogfnd+bicsIFtNZW1vcmlhXSku