It instantly gives you the answer to cases that look like A->B->C->D->...->Z where enumerate-and-evaluate requires you to consider 2^24 possibilities.
Let’s think a moment about further generalization. So you have an arbitrary directed graph where a->b means a is looking at b; some vertices are coloured white (“married”) and some black (“unmarried”), and the question is: is there a way to colour all the vertices black and white that has no instance of white->black?
Well, if there is any chain of arrows starting at a white vertex and ending with a black one, then the reasoning I described tells you that in any colouring there must be a white->black edge.
On the other hand, if there isn’t then we can start at every white vertex, walking along arrows and whitening every vertex we reach; since there is no W->...->B chain this will never produce a clash. At this point we have whitened every vertex reachable from a white one, so now we can colour all the rest black; we’ve coloured the whole graph without any W->B edges.
So we have our (maximally generalized) answer: the answer to “must a married person be looking at an unmarried person?” is “yes, if there is a married->...->unmarried chain somewhere; no, otherwise”. And (so it seems to me) this is just following the path of least resistance using the approach I described. So I’m going to stand by my claim that it “generalizes more readily”.
It instantly gives you the answer to cases that look like A->B->C->D->...->Z where enumerate-and-evaluate requires you to consider 2^24 possibilities.
Let’s think a moment about further generalization. So you have an arbitrary directed graph where a->b means a is looking at b; some vertices are coloured white (“married”) and some black (“unmarried”), and the question is: is there a way to colour all the vertices black and white that has no instance of white->black?
Well, if there is any chain of arrows starting at a white vertex and ending with a black one, then the reasoning I described tells you that in any colouring there must be a white->black edge.
On the other hand, if there isn’t then we can start at every white vertex, walking along arrows and whitening every vertex we reach; since there is no W->...->B chain this will never produce a clash. At this point we have whitened every vertex reachable from a white one, so now we can colour all the rest black; we’ve coloured the whole graph without any W->B edges.
So we have our (maximally generalized) answer: the answer to “must a married person be looking at an unmarried person?” is “yes, if there is a married->...->unmarried chain somewhere; no, otherwise”. And (so it seems to me) this is just following the path of least resistance using the approach I described. So I’m going to stand by my claim that it “generalizes more readily”.