Class HeuristicPermanent

  • All Implemented Interfaces:

    
    public final class HeuristicPermanent
    extends PermSolver
                        

    Heuristic approximation to the permanent of a positive matrix.

    This implementation uses Sinkhorn scaling to make the matrix approximately doubly stochastic, then applies a mean-field approximation with van der Waerden bounds combined with a Gurvits-like capacity bound.

    The algorithm:

    • Uses Sinkhorn scaling to make A approximately doubly stochastic

    • Applies a mean-field approximation with van der Waerden bounds

    • Combines with a Gurvits-like capacity bound

    • Scales the result back to the original matrix scale

    This is a heuristic approximation suitable for large matrices where exact computation is computationally prohibitive. The approximation quality depends on the structure of the input matrix.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      Unit compute() Compute the permanent or approximation for the given matrix.
      • Methods inherited from class jline.lib.perm.PermSolver

        getMatrix, getMemory, getN, getTime, getValue, setMemory, setTime, setValue, solve
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • HeuristicPermanent

        HeuristicPermanent(Matrix matrix, Boolean solve)
        Constructor with just matrix and solve parameters.
      • HeuristicPermanent

        HeuristicPermanent(Matrix matrix)
        Constructor with just matrix parameter.
      • HeuristicPermanent

        HeuristicPermanent(Matrix matrix, Double tolerance, Integer maxIterations, Boolean solve)
        Parameters:
        matrix - The matrix for which to compute the permanent (must be strictly positive)
        tolerance - Convergence threshold for Sinkhorn scaling
        maxIterations - Maximum number of Sinkhorn iterations
        solve - Whether to automatically run solve() after construction
    • Method Detail

      • compute

         Unit compute()

        Compute the permanent or approximation for the given matrix. This method must be implemented by all concrete solver classes. The result should be stored in the value property.