Files
baritone/src/main/java/com/github/btrekkie/connectivity/ConnEdge.java
William Jacobs a60eac5b6c Initial commit
This adds the initial contents of the repository.
2019-03-06 16:46:45 -05:00

62 lines
3.2 KiB
Java

package com.github.btrekkie.connectivity;
/**
* Represents an edge in a ConnGraph, at the level of the edge (i.e. at the lowest level i for which G_i contains the
* edge). Every graph edge has exactly one corresponding ConnEdge object, regardless of the number of levels it appears
* in. See the comments for the implementation of ConnGraph.
*
* ConnEdges are stored in the linked lists suggested by EulerTourVertex.graphListHead and
* EulerTourVertex.forestListHead. Each ConnEdge is in two linked lists, so care must be taken when traversing the
* linked lists. prev1 and next1 are the links for the list starting at vertex1.graphListHead or vertex1.forestListHead,
* while prev2 and next2 are the links for vertex2. But the vertex1 and vertex2 fields of a given edge are different
* from the vertex1 and vertex2 fields of the linked edges. For example, the edge after next1 is not necessarily
* next1.next1. It depends on whether next1.vertex1 is the same as vertex1. If next1.vertex1 == vertex1, then the edge
* after next1 is next1.next1, but otherwise, it is next1.next2.
*/
class ConnEdge {
/** The edge's first endpoint (at the same level as the edge). */
public EulerTourVertex vertex1;
/** The edge's second endpoint (at the same level as the edge). */
public EulerTourVertex vertex2;
/**
* The EulerTourEdge object describing the edge's presence in an Euler tour tree, at the same level as the edge, or
* null if the edge is not in the Euler tour forest F_i.
*/
public EulerTourEdge eulerTourEdge;
/**
* The edge preceding this in a linked list of same-level edges adjacent to vertex1, if any. The edge is either part
* of a list of non-forest edges starting with vertex1.graphListHead, or part of a list of forest edges starting
* with vertex1.forestListHead. Note that this list excludes any edges that also appear in lower levels.
*/
public ConnEdge prev1;
/**
* The edge succeeding this in a linked list of same-level edges adjacent to vertex1, if any. The edge is either
* part of a list of non-forest edges starting with vertex1.graphListHead, or part of a list of forest edges
* starting with vertex1.forestListHead. Note that this list excludes any edges that also appear in lower levels.
*/
public ConnEdge next1;
/**
* The edge preceding this in a linked list of same-level edges adjacent to vertex2, if any. The edge is either part
* of a list of non-forest edges starting with vertex2.graphListHead, or part of a list of forest edges starting
* with vertex2.forestListHead. Note that this list excludes any edges that also appear in lower levels.
*/
public ConnEdge prev2;
/**
* The edge succeeding this in a linked list of same-level edges adjacent to vertex2, if any. The edge is either
* part of a list of non-forest edges starting with vertex2.graphListHead, or part of a list of forest edges
* starting with vertex2.forestListHead. Note that this list excludes any edges that also appear in lower levels.
*/
public ConnEdge next2;
public ConnEdge(EulerTourVertex vertex1, EulerTourVertex vertex2) {
this.vertex1 = vertex1;
this.vertex2 = vertex2;
}
}