Interface DecrossTwoLayer<Ops>

a decrossing operator that reorders by looking at pairs of layers

This method can be very fast and is a general heuristic for efficient minimization. Customize with a two layer operator with order, different inits, or the number of passes.

interface DecrossTwoLayer<Ops extends DecrossTwoLayerOps = DecrossTwoLayerOps> {
    inits<const NewInits extends readonly Decross<never, never>[]>(
        val: NewInits,
    ): DecrossTwoLayer<U<Ops, "inits", NewInits>>;
    inits(): Ops["inits"];
    order<NewOrder extends Twolayer<never, never>>(
        val: NewOrder,
    ): DecrossTwoLayer<U<Ops, "order", NewOrder>>;
    order(): Ops["order"];
    passes(val: number): DecrossTwoLayer<Ops>;
    passes(): number;
    (
        layers: SugiNode<
            Ops extends DecrossTwoLayerOps<N, never> ? N : never,
            Ops extends DecrossTwoLayerOps<never, L> ? L : never,
        >[][],
    ): void;
}

Type Parameters

Hierarchy (View Summary)

Methods

  • sets the initialization passes before decrossings

    For every initialization operator, this will run the two layer heuristic, ultimately choosing the ordering that minimized overall crossings. For this reason, only quick decrossing operators should be used, not expensive ones. The empty list is treated as a singleton list with a noop operator.

    (default: [decrossDfs(), decrossDfs().topDown(false)])

    Type Parameters

    • const NewInits extends readonly Decross<never, never>[]

    Parameters

    Returns DecrossTwoLayer<U<Ops, "inits", NewInits>>

  • get the current initialization passes

    Returns Ops["inits"]