Skip to content

Dialectic Search

The Dialectic Search Solver uses a path search between two states representing the thesis and antithesis. A greedy search is used to reduce the energy by applying bit flips in an attempt to find the solution.

The Dialectic Search algorithm operates through two distinct phases:

  1. Antithesis: Generates a complementary solution designed to explore different regions of the solution space
  2. Synthesis: Creates new solutions by exploring paths between thesis and antithesis

Each phase uses tabu search with potentially different parameter settings to guide the exploration process. This approach is particularly effective for problems with complex landscapes containing many local optima.

Compatible Backends

Backend Default
DWave

Initialization

Python
from luna_quantum.solve.parameters.algorithms.base_params.decomposer import Decomposer
from luna_quantum.solve.parameters.algorithms.base_params.tabu_search_params import TabuSearchBaseParams
from luna_quantum.solve.parameters.algorithms.search_algorithms.dialectic_search import DialecticSearch

algorithm = DialecticSearch(
    backend=None,
    antithesis_tabu_params=TabuSearchBaseParams(
        num_reads=None,
        tenure=None,
        timeout=100
    ),
    synthesis_tabu_params=TabuSearchBaseParams(
        num_reads=None,
        tenure=None,
        timeout=100
    ),
    decomposer=Decomposer(
        size=10,
        min_gain=None,
        rolling=True,
        rolling_history=1.0,
        silent_rewind=True,
        traversal='energy'
    ),
    max_iter=100,
    max_time=5,
    convergence=3,
    target=None,
    rtol=1e-05,
    atol=1e-08,
    max_tries=100
)

Usage

Python
from luna_quantum.algorithms import DialecticSearch

algorithm = DialecticSearch()
solve_job = algorithm.run(model, name="my-solve-job")