Skip to main content
. 2017 Nov 2;17(11):2514. doi: 10.3390/s17112514
Algorithm 1 ϵ-Admissible Branch and Bound
  • Require: 

    Priority Queue Qopen, Queue Qclosed, evaluation function f(·), ϵ-admissible heuristic g˜(·), priority heuristic P(·,·), Start node Nstart, end time Tmax, maximum number of iterations Imax, heuristic reward B0

  • 1:

    BB0

  • 2:

    Qopen.insert(Nstart)

  • 3:

    i0

  • 4:

    while Qopen is not empty or i<Imax do

  • 5:

    ii+1

  • 6:

    NQopen.pop()

  • 7:

    Qclosed.insert(N)

  • 8:

    if N is a complete candidate solution and f(N)>B then

  • 9:

      Bf(N)                                                //new best solution found. Store it.

  • 10:

    end if

  • 11:

    NBranch(N)

  • 12:

    for all NiN do

  • 13:

      if Bound(N,B,g˜) and (N not in Qopen and N not in Qclosed) then

  • 14:

       Ni.priorityP(Ni,g˜)

  • 15:

       Ni.parentN

  • 16:

       Ni.Rf(Ni)

  • 17:

       Qopen.insert(Ni)

  • 18:

      end if

  • 19:

    end for

  • 20:

    end while