I don't know how to state it elegantly, but basically, I want to implement a brute force search algorithm, but there are many different ways that I could enumerate through the search space.  This might be naive of me, but I imagine that how I choose to enumerate through the search space could greatly affect whether or not my algorithm works well in practice.

Consider the following decision problem as a simplified example.

**Input:** A polynomial $p(x)$ with integer coefficients and a natural number $k$.

**Question:** Does there exist $i \in [k]$ such that $p(i) = 0$?

Now, there could be many different algorithms for solving this problem, but I decide to choose a brute force approach.  Consider the following strategies for enumerating through the search space.

**Ascending Strategy:** I could check if $p(1)$ is 0, then $p(2)$, then $p(3)$, ..., until I find an $i$ such that $p(i) = 0$ or I try every $i \in [k]$.

**Descending Strategy:** I could check if $p(k)$ is 0, then $p(k-1)$, then $p(k-2)$, ..., until I find an $i$ such that $p(i) = 0$ or I try every $i \in [k]$.

**Popularity Strategy:** I could store a small list $L$ of most popular solutions and try those first before trying the numbers in $[k] - L$.

**Sieve Strategy:** I could do a sort of sieve enumeration.  I try all numbers divisible by 2 in $[k]$, then numbers divisible by 3 in $[k]$, then 5, then 7, then 11, then 13, and so on.  (Assuming that I have access to some large pre-computed list of primes.)

**Randomness Strategy:** Maybe there is an interesting enumeration strategy that utilizes a large string of random bits.

Basically, I'm looking to answer the following questions about brute force search algorithms:

**Question A:** Are there any benefits to choosing a specific enumeration strategy?

**Question B:** Are there any examples of search problems where in practice you would choose an interesting enumeration strategy?  I feel like there may be some search problems where in practice a variant of the Popularity Strategy works effectively.