Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

If I understand your algorithm correctly I think it fails on this graph (drawn on my phone, using an online implementation of Paint).

https://imgur.com/a/ihPrwrX

I think this is roughly the counterexample the person above was suggesting.



Aha! Yes to fix these cases a bit of bookkeeping is needed: a protruding edge like that would force the "walking" to back up, because its a dead end indeed. However, it also immediately means such an edge is not part of any loops, can be marked as such, and ignored upon retracing the steps.

It's an edge case that should be handled, but does not prevent the general algo from working.


Ah yeah, if you're not trying to identify all loops but just check if some loops exist then that works. I think you can dispense with the "walking around taking clockwise/anticlockwise edges" part though. If you repeatedly do the "remove all nodes with only 1 edge going to them" step then you've already identified whether or not at least one loop exists.


Repeatedly removing those edges would help indeed! I am interested in finding the loops, but in the example provided the "dead end" edges do not contribute to the loop. Officially a loop is not allowed to contain the same vertex twice (besides start/end), otherwise any sequence of vertices could be considered a loop just by repeating them in reverse order.

However, indeed it remains true that it does not find all loops, only the smallest set of loops that cover all edges.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: