package bipartitegraph

import "github.com/onsi/gomega/matchers/support/goraph/bipartitegraph"

Index

Types

type BipartiteGraph

type BipartiteGraph struct {
	Left  NodeOrderedSet
	Right NodeOrderedSet
	Edges EdgeSet
}

func NewBipartiteGraph

func NewBipartiteGraph(leftValues, rightValues []any, neighbours func(any, any) (bool, error)) (*BipartiteGraph, error)

func (*BipartiteGraph) FreeLeftRight

func (bg *BipartiteGraph) FreeLeftRight(edges EdgeSet) (leftValues, rightValues []any)

FreeLeftRight returns left node values and right node values of the BipartiteGraph's nodes which are not part of the given edges.

func (*BipartiteGraph) LargestMatching

func (bg *BipartiteGraph) LargestMatching() (matching EdgeSet)

LargestMatching implements the Hopcroft–Karp algorithm taking as input a bipartite graph and outputting a maximum cardinality matching, i.e. a set of as many edges as possible with the property that no two edges share an endpoint.

Source Files

bipartitegraph.go bipartitegraphmatching.go

Version
v1.37.0 (latest)
Published
Apr 2, 2025
Platform
linux/amd64
Imports
5 packages
Last checked
3 minutes ago

Tools for package owners.