Skip to content

editorGlobalsGraph

Class: Graph ‹T

This Class provides functionality needed to perform a connectivity test on a Graph. It is used to calculate MinCuts up to a fixed size in the plate graph It uses an adjacency matrix to allow performant delete and re-insert operations.

Type parameters

T

Hierarchy

  • Graph

Index

Constructors

Properties

Methods

Constructors

constructor

+ new Graph(backingObjects: T[]): Graph

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:73

Parameters:

Name Type
backingObjects T[]

Returns: Graph

Properties

Private Readonly adjMatrix

adjMatrix: number[][]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:69


Private Readonly backingObjects

backingObjects: T[]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:71


Private Readonly isDeleted

isDeleted: boolean[]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:70


Private nodeCountCurrent

nodeCountCurrent: number

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:72


Private Readonly nodeCountWithDeleted

nodeCountWithDeleted: number

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:73

Methods

Private _existingIndex

_existingIndex(): number

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:219

Returns: number


Private _minCutNodes

_minCutNodes(maxSize: number): number[]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:205

Parameters:

Name Type
maxSize number

Returns: number[]


Private _nodes

_nodes(): number[]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:226

return all node indices that are currently not deleted

Returns: number[]


Private _readdNode

_readdNode(node: number): void

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:237

Parameters:

Name Type
node number

Returns: void


Private _removeNode

_removeNode(node: number): void

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:230

Parameters:

Name Type
node number

Returns: void


addEdge

addEdge(from: number, to: number): void

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:200

inserts an edge into the graph runs in O(1) because of adjacency matrix

Parameters:

Name Type Description
from number -
to number

Returns: void


asBackingObjects

asBackingObjects(nodes: number[]): T[]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:90

Parameters:

Name Type
nodes number[]

Returns: T[]


connectedComponents

connectedComponents(): object

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:143

splits the graph in two not connected parts if the graph was connected before component 2 will be empty if the graph consists of more than one component all component except the first one will be together in the second component.

Runs in O(V)

Returns: object

  • nodesInPartition1: number[]

  • nodesInPartition2: number[]


fromBackingObject

fromBackingObject(backingObject: T): number

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:98

Parameters:

Name Type
backingObject T

Returns: number


fromBackingObjects

fromBackingObjects(backingObjects: T[]): number[]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:94

Parameters:

Name Type
backingObjects T[]

Returns: number[]


isConnected

isConnected(): boolean

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:175

Returns: boolean


isCut

isCut(cutCandidate: number[]): boolean

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:187

Parameters:

Name Type
cutCandidate number[]

Returns: boolean


nodeCount

nodeCount(): number

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:103

Returns: number


nodeCut

nodeCut(maxSize: number): object

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:166

Finds a min node (!) cut with size up to maxSize This runs in O(V^maxSize * V). If you use this with maxSize > 2, you should be careful because this gets costly (Exponential runtime in the amount of nodes in the graph) There is a reduction to minimum (edge) cut problem but this is fast enough for maxSize <= 2 so there should not be need to do more here In case this gets to slow consider implementing Karger Stein here

Parameters:

Name Type Description
maxSize number

Returns: object

  • nodesInCut: number[]

  • nodesInPartition1: number[]

  • nodesInPartition2: number[]


nodesInComponent

nodesInComponent(startNode: number): number[]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:107

Parameters:

Name Type
startNode number

Returns: number[]


readdNodes

readdNodes(nodes: number[]): void

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:183

Parameters:

Name Type
nodes number[]

Returns: void


removeNodes

removeNodes(nodes: number[]): void

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:179

Parameters:

Name Type
nodes number[]

Returns: void


Static Private _permutation

_permutation(array: number[], length: number): number[][]

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:52

Calculates all permutations of a given array with a fixed length The maximum length that is supported is 2

Parameters:

Name Type
array number[]
length number

Returns: number[][]


Static fromJsGraph

fromJsGraphU›(inputGraph: IJsgraph, backingObjects: U[]): Graph‹U›

Defined in src/modules/kyub.core.reinforcement/src/Graph.ts:17

Type parameters:

U

Parameters:

Name Type
inputGraph IJsgraph
backingObjects U[]

Returns: Graph‹U›