Skip to main content

Graph Algorithm Ontology

Algorithms
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 01 October 2026
Audio Overview
AI SEARCH

FLOW ALGEBRA — GRAPH ALGORITHM ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/algorithms/graph-algorithm-ontology.html

FLOW GRAPH_ALGORITHM_ONTOLOGY {

  META {
    DOMAIN = "Computing Ontologies"
    SUBDOMAIN = "Algorithms"
    ONTOLOGY = "Graph Algorithm Ontology"
    PURPOSE = "Formalise graph algorithms, traversal, reachability, shortest paths, spanning trees, connectivity, topological ordering, network flow, correctness and complexity."
    LOCALE = "en-GB"
  }

  ENTITY_TYPES {
    GRAPH_ALGORITHM
    GRAPH
    DIRECTED_GRAPH
    UNDIRECTED_GRAPH
    WEIGHTED_GRAPH
    DAG
    VERTEX
    EDGE
    SOURCE_VERTEX
    TARGET_VERTEX
    EDGE_WEIGHT
    PATH
    CYCLE
    COMPONENT
    CONNECTED_COMPONENT
    STRONGLY_CONNECTED_COMPONENT
    SPANNING_TREE
    MINIMUM_SPANNING_TREE
    SHORTEST_PATH
    DISTANCE
    PREDECESSOR
    FRONTIER
    VISITED_SET
    QUEUE
    STACK
    PRIORITY_QUEUE
    BREADTH_FIRST_SEARCH
    DEPTH_FIRST_SEARCH
    DIJKSTRA_ALGORITHM
    BELLMAN_FORD_ALGORITHM
    FLOYD_WARSHALL_ALGORITHM
    A_STAR_ALGORITHM
    PRIM_ALGORITHM
    KRUSKAL_ALGORITHM
    TOPOLOGICAL_SORT
    TARJAN_ALGORITHM
    KOSARAJU_ALGORITHM
    UNION_FIND
    FLOW_NETWORK
    MAXIMUM_FLOW
    MINIMUM_CUT
    CAPACITY
    FLOW
    RESIDUAL_GRAPH
    AUGMENTING_PATH
    HEURISTIC
    PRECONDITION
    POSTCONDITION
    INVARIANT
    CORRECTNESS
    TERMINATION
    VERTEX_COUNT
    EDGE_COUNT
    TIME_COMPLEXITY
    SPACE_COMPLEXITY
    EXECUTION_TRACE
    IMPLEMENTATION
    CONFIGURATION
    EVIDENCE
    CONFIDENCE_SCORE
    PROVENANCE_RECORD
  }

  RELATIONSHIPS {
    IS_A
    INSTANCE_OF
    ACCEPTS
    PRODUCES
    OPERATES_ON
    HAS_VERTEX
    HAS_EDGE
    HAS_SOURCE
    HAS_TARGET
    HAS_WEIGHT
    HAS_CAPACITY
    HAS_FLOW
    VISITS
    EXPANDS
    DISCOVERS
    REACHES
    RELAXES
    MARKS_VISITED
    SETS_PREDECESSOR
    HAS_DISTANCE
    HAS_PATH
    HAS_COMPONENT
    BUILDS
    SPANS
    ORDERS
    UNIONS
    FINDS
    AUGMENTS
    USES_HEURISTIC
    REQUIRES
    ENSURES
    MAINTAINS
    HAS_INVARIANT
    HAS_CORRECTNESS
    HAS_TIME_COMPLEXITY
    HAS_SPACE_COMPLEXITY
    IMPLEMENTED_BY
    HAS_CONFIGURATION
    DERIVED_FROM
    INFERRED_FROM
    HAS_EVIDENCE
    HAS_CONFIDENCE
    HAS_PROVENANCE
    SEMANTICALLY_EQUIVALENT_TO
  }

  INPUTS {
    GRAPH_ALGORITHM_SPECIFICATIONS
    PSEUDOCODE
    SOURCE_CODE
    GRAPH_DATA
    VERTEX_DATA
    EDGE_DATA
    DIRECTION_DATA
    EDGE_WEIGHT_DATA
    CAPACITY_DATA
    SOURCE_AND_TARGET_DATA
    HEURISTIC_DATA
    EXECUTION_TRACES
    RELAXATION_TRACES
    COMPONENT_DATA
    PATH_DATA
    FLOW_DATA
    CORRECTNESS_PROOFS
    COMPLEXITY_ANALYSES
    IMPLEMENTATION_DATA
    CONFIGURATION_DATA
    ONTOLOGY_TERMS
  }

  NORMALISE {
    STANDARDISE_GRAPH_ALGORITHM_IDENTIFIERS
    NORMALISE_ALGORITHM_VARIANTS
    NORMALISE_GRAPH_IDENTIFIERS
    NORMALISE_VERTEX_AND_EDGE_IDENTIFIERS
    NORMALISE_DIRECTION
    NORMALISE_EDGE_WEIGHTS
    NORMALISE_CAPACITIES_AND_FLOWS
    NORMALISE_SOURCE_AND_TARGET
    NORMALISE_PATH_AND_COMPONENT_IDENTIFIERS
    NORMALISE_HEURISTICS
    NORMALISE_COMPLEXITY_NOTATION
    RESOLVE_ALGORITHM_GRAPH_VERTEX_AND_EDGE_IDENTITIES
    ALIGN_ONTOLOGY_TERMS
    REMOVE_DUPLICATES
    VALIDATE_METADATA
    PRESERVE_PROVENANCE
  }

  PROCESS GRAPH_ALGORITHM_PIPELINE {
    GRAPH_PROBLEM
      -> ALGORITHM_IDENTIFICATION
      -> GRAPH_AND_PRECONDITION_RESOLUTION
      -> INITIAL_STATE
      -> EXECUTION
      -> RESULT_CONSTRUCTION
      -> RESULT_VALIDATION
      -> CORRECTNESS_AND_TERMINATION_ANALYSIS
      -> COMPLEXITY_ANALYSIS
      -> OUTPUT
  }

  PROCESS BFS_REASONING {
    START_VERTEX
      -> QUEUE + VISITED_SET
      -> ENQUEUE_START

    WHILE QUEUE_NOT_EMPTY
      -> DEQUEUE_VERTEX
      -> VISIT_VERTEX
      -> DISCOVER_UNVISITED_NEIGHBOURS
      -> SET_PREDECESSOR_AND_DISTANCE
      -> MARK_VISITED
      -> ENQUEUE_NEIGHBOURS

    RESULT
      -> BFS_TREE_AND_REACHABILITY
  }

  PROCESS DFS_REASONING {
    START_VERTEX
      -> STACK_OR_RECURSION
      -> VISITED_SET

    VISIT_VERTEX
      -> MARK_VISITED
      -> EXPLORE_UNVISITED_NEIGHBOURS

    DEAD_END
      -> BACKTRACK

    RESULT
      -> DFS_FOREST_AND_REACHABILITY
  }

  PROCESS DIJKSTRA_REASONING {
    SOURCE_VERTEX
      -> DISTANCE = 0

    OTHER_VERTICES
      -> DISTANCE = INFINITY

    PRIORITY_QUEUE
      -> EXTRACT_MIN_VERTEX

    EXTRACTED_VERTEX
      -> RELAX_OUTGOING_EDGES

    IMPROVED_DISTANCE
      -> UPDATE_DISTANCE_AND_PREDECESSOR

    REQUIRE
      -> NONNEGATIVE_EDGE_WEIGHTS

    RESULT
      -> SHORTEST_PATH_TREE
  }

  PROCESS BELLMAN_FORD_REASONING {
    SOURCE_VERTEX
      -> INITIALISE_DISTANCES

    REPEAT |V|-1 TIMES
      -> RELAX_ALL_EDGES

    EXTRA_PASS
      -> NEGATIVE_CYCLE_CHECK

    NO_IMPROVEMENT
      -> SHORTEST_PATH_RESULTS

    IMPROVEMENT
      -> REACHABLE_NEGATIVE_CYCLE_EVIDENCE
  }

  PROCESS FLOYD_WARSHALL_REASONING {
    INITIAL_DISTANCE_MATRIX
      -> DIRECT_EDGE_DISTANCES

    FOR EACH INTERMEDIATE_VERTEX K
      -> FOR EACH PAIR I,J
      -> DIST[I,J] = MIN(DIST[I,J], DIST[I,K] + DIST[K,J])

    RESULT
      -> ALL_PAIRS_SHORTEST_PATH_DISTANCES
  }

  PROCESS A_STAR_REASONING {
    SOURCE_VERTEX
      -> G_SCORE = 0

    FRONTIER
      -> PRIORITY_BY_F_SCORE

    F_SCORE
      -> G_SCORE + HEURISTIC

    EXTRACT_LOWEST_F_SCORE
      -> GOAL_TEST

    NON_GOAL
      -> RELAX_NEIGHBOURS

    GOAL
      -> RECONSTRUCT_PATH
  }

  PROCESS PRIM_REASONING {
    START_VERTEX
      -> TREE_VERTEX_SET

    CROSSING_EDGES
      -> SELECT_MINIMUM_WEIGHT_EDGE

    SELECTED_EDGE
      -> ADD_NEW_VERTEX_AND_EDGE

    REPEAT
      -> SPANNING_TREE

    REQUIRE
      -> UNDIRECTED_WEIGHTED_GRAPH
  }

  PROCESS KRUSKAL_REASONING {
    EDGES
      -> SORT_BY_WEIGHT

    EACH_EDGE_IN_ORDER
      -> FIND_ENDPOINT_COMPONENTS

    DIFFERENT_COMPONENTS
      -> ADD_EDGE
      -> UNION_COMPONENTS

    SAME_COMPONENT
      -> SKIP_EDGE

    RESULT
      -> MINIMUM_SPANNING_FOREST_OR_TREE
  }

  PROCESS TOPOLOGICAL_SORT_REASONING {
    DIRECTED_GRAPH
      -> DAG_PRECONDITION
      -> IN_DEGREE_OR_DFS_ORDERING_METHOD
      -> TOPOLOGICAL_ORDER
  }

  PROCESS COMPONENT_REASONING {
    UNVISITED_VERTEX
      -> BFS_OR_DFS
      -> CONNECTED_COMPONENT

    DIRECTED_GRAPH
      -> MUTUAL_REACHABILITY_ANALYSIS
      -> STRONGLY_CONNECTED_COMPONENT
  }

  PROCESS FLOW_REASONING {
    FLOW_NETWORK
      -> SOURCE + SINK + CAPACITIES

    RESIDUAL_GRAPH
      -> AUGMENTING_PATH_SEARCH

    AUGMENTING_PATH
      -> BOTTLENECK_CAPACITY
      -> AUGMENT_FLOW

    UPDATE
      -> RESIDUAL_CAPACITIES

    NO_AUGMENTING_PATH
      -> MAX_FLOW_CANDIDATE
      -> MIN_CUT_RELATION
  }

  PROCESS CORRECTNESS_REASONING {
    PRECONDITIONS
      -> VALID_GRAPH_CONTEXT

    INVARIANTS
      -> PRESERVED_DURING_EXECUTION

    TERMINATION
      -> FINAL_RESULT
      -> POSTCONDITIONS
      -> CORRECTNESS_EVIDENCE
  }

  PROCESS COMPLEXITY_REASONING {
    ALGORITHM + VERTEX_COUNT + EDGE_COUNT + GRAPH_REPRESENTATION
      -> OPERATION_COUNT_MODEL

    AUXILIARY_DATA_STRUCTURES
      -> QUEUE_STACK_PRIORITY_QUEUE_OR_UNION_FIND_COST

    OPERATION_COUNTS
      -> TIME_COMPLEXITY

    AUXILIARY_STATE
      -> SPACE_COMPLEXITY
  }

  RULES {
    IF DIJKSTRA_IS_USED
    THEN REQUIRE NONNEGATIVE_EDGE_WEIGHTS_FOR_STANDARD_CORRECTNESS

    IF TOPOLOGICAL_SORT_IS_ASSERTED
    THEN REQUIRE DIRECTED_ACYCLIC_GRAPH

    IF MINIMUM_SPANNING_TREE_IS_ASSERTED
    THEN PRESERVE UNDIRECTED_WEIGHTED_GRAPH_AND_CONNECTIVITY_CONTEXT

    IF SHORTEST_PATH_IS_ASSERTED
    THEN PRESERVE SOURCE_TARGET_WEIGHT_AND_ALGORITHM_PRECONDITIONS

    IF A_STAR_OPTIMALITY_IS_ASSERTED
    THEN PRESERVE REQUIRED_HEURISTIC_PROPERTIES

    IF FLOW_IS_ASSERTED
    THEN CHECK CAPACITY_AND_FLOW_CONSERVATION_CONSTRAINTS

    IF SEMANTIC_IDENTIFIERS_DIFFER
    AND GRAPH_ALGORITHM_REFERENT_IS_SAME
    THEN APPLY SEMANTIC_EQUIVALENCE
  }

  CONFIDENCE {
    CONFIDENCE_SCORE =
      WEIGHT(
        ALGORITHM_IDENTITY_CERTAINTY,
        GRAPH_COMPLETENESS,
        DIRECTION_WEIGHT_AND_CAPACITY_CERTAINTY,
        PRECONDITION_CERTAINTY,
        EXECUTION_TRACE_COMPLETENESS,
        RESULT_VALIDATION_QUALITY,
        COMPLEXITY_ANALYSIS_QUALITY,
        PROVENANCE_COMPLETENESS
      )

    LEVELS {
      HIGH
      MODERATE
      LOW
      INSUFFICIENT
    }

    IF GRAPH_DATA_IS_PARTIAL
    THEN REDUCE_PATH_CONNECTIVITY_SPANNING_AND_FLOW_CONFIDENCE

    IF ALGORITHM_PRECONDITIONS_ARE_UNKNOWN
    THEN REDUCE_CORRECTNESS_CONFIDENCE

    IF COMPLETE_TRACE_AND_RESULT_VALIDATION_CONFIRM_POSTCONDITIONS
    THEN INCREASE_CONFIDENCE_SCORE
  }

  SEMANTIC_EQUIVALENCE {
    EQUIVALENCE_KEY =
      NORMALISE(
        ENTITY_TYPE,
        GRAPH_ALGORITHM_IDENTIFIER,
        ALGORITHM_VARIANT,
        GRAPH_TYPE,
        SOURCE_TARGET_CONTEXT,
        WEIGHT_CAPACITY_HEURISTIC_CONTEXT,
        CONFIGURATION
      )

    IF EQUIVALENCE_KEY(A) == EQUIVALENCE_KEY(B)
    THEN A SEMANTICALLY_EQUIVALENT_TO B
    ELSE PRESERVE_DISTINCT_ENTITIES
  }

  REASONING_CONSTRAINTS {
    GRAPH_ALGORITHM != GRAPH_DATA_STRUCTURE
    BFS != DFS
    SHORTEST_PATH != MINIMUM_SPANNING_TREE
    DIJKSTRA != BELLMAN_FORD
    TOPOLOGICAL_ORDER != SORTED_VERTEX_KEYS
    CONNECTED_COMPONENT != STRONGLY_CONNECTED_COMPONENT
    REACHABILITY != SHORTEST_PATH
    EDGE_WEIGHT != CAPACITY
    FLOW != EDGE_WEIGHT
    MAXIMUM_FLOW != MINIMUM_CUT_AS_IDENTICAL_OBJECT
    MINIMUM_SPANNING_FOREST != MINIMUM_SPANNING_TREE_FOR_DISCONNECTED_GRAPH
    TIME_COMPLEXITY_DEPENDS_ON_GRAPH_REPRESENTATION_AND_AUXILIARY_DATA_STRUCTURES
    GRAPH_RESULTS_DEPEND_ON_EXACT_GRAPH_STATE_DIRECTION_WEIGHTS_AND_CAPACITIES
    PROVENANCE_MUST_BE_PRESERVED
    UNCERTAINTY_MUST_NOT_BE_DISCARDED
  }

  VALIDATION {
    CHECK_ENTITY_TYPES
    CHECK_RELATION_DOMAINS_AND_RANGES
    CHECK_GRAPH_ALGORITHM_IDENTIFIER
    CHECK_ALGORITHM_VARIANT
    CHECK_GRAPH_IDENTIFIER
    CHECK_VERTEX_AND_EDGE_DATA
    CHECK_DIRECTION
    CHECK_WEIGHTS
    CHECK_CAPACITIES_AND_FLOWS_IF_APPLICABLE
    CHECK_SOURCE_AND_TARGET
    CHECK_PRECONDITIONS
    CHECK_EXECUTION_TRACE
    CHECK_BFS_AND_DFS_RELATIONS
    CHECK_SHORTEST_PATH_RELATIONS
    CHECK_SPANNING_TREE_RELATIONS
    CHECK_TOPOLOGICAL_ORDER
    CHECK_COMPONENT_RELATIONS
    CHECK_FLOW_RELATIONS
    CHECK_CORRECTNESS_EVIDENCE
    CHECK_TERMINATION
    CHECK_COMPLEXITY_CONTEXT
    CHECK_IMPLEMENTATION
    CHECK_PROVENANCE
    CHECK_CONFIDENCE
    CHECK_SEMANTIC_CONSISTENCY
  }

  OUTPUTS {
    NORMALISED_GRAPH_ALGORITHM_ENTITIES
    GRAPH_INPUT_RELATIONS
    VERTEX_AND_EDGE_RELATIONS
    BFS_RELATIONS
    DFS_RELATIONS
    REACHABILITY_RELATIONS
    SHORTEST_PATH_RELATIONS
    DISTANCE_AND_PREDECESSOR_RELATIONS
    MINIMUM_SPANNING_TREE_RELATIONS
    TOPOLOGICAL_ORDER_RELATIONS
    CONNECTED_COMPONENT_RELATIONS
    STRONGLY_CONNECTED_COMPONENT_RELATIONS
    FLOW_AND_RESIDUAL_GRAPH_RELATIONS
    MAX_FLOW_MIN_CUT_RELATIONS
    CORRECTNESS_RELATIONS
    TERMINATION_RELATIONS
    TIME_COMPLEXITY_RELATIONS
    SPACE_COMPLEXITY_RELATIONS
    IMPLEMENTATION_RELATIONS
    CONFIDENCE_SCORES
    EVIDENCE_LINKS
    PROVENANCE_RECORDS
    EXPLANATION_PATHS
  }

  UPDATE_MODEL {
    ON GRAPH_ALGORITHM_OR_CONFIGURATION_CHANGE {
      NORMALISE
      RESOLVE_ALGORITHM_GRAPH_VERTEX_AND_EDGE_IDENTITIES
      UPDATE_PRECONDITIONS_AND_EXECUTION_MODEL
      REASSESS_CORRECTNESS_AND_TERMINATION
      REASSESS_COMPLEXITY
      UPDATE_CONFIDENCE
      PRESERVE_VERSION_HISTORY
    }

    ON GRAPH_STATE_OR_EXECUTION_CHANGE {
      LINK_EVIDENCE
      UPDATE_GRAPH_CONTEXT
      UPDATE_EXECUTION_TRACE
      RECOMPUTE_AFFECTED_RESULTS
      REVALIDATE_POSTCONDITIONS
      UPDATE_CONFIDENCE
      RECORD_PROVENANCE
    }

    ON ONTOLOGY_REVISION {
      REMAP_TERMS
      CHECK_SEMANTIC_EQUIVALENCE
      IDENTIFY_DEPRECATED_TERMS
      MIGRATE_RELATIONSHIPS
      PRESERVE_PRIOR_VERSION_REFERENCES
    }
  }

  FLOW_HASH {
    HASH_INPUT =
      CANONICALISE(
        ENTITY_TYPES,
        RELATIONSHIPS,
        RULES,
        CONFIDENCE,
        SEMANTIC_EQUIVALENCE,
        REASONING_CONSTRAINTS,
        UPDATE_MODEL
      )

    FLOW_HASH = SHA256(HASH_INPUT)
  }

  AI_CONSUMPTION {
    INDEX {
      ONTOLOGY
      ENTITY_TYPES
      RELATIONSHIPS
      RULES
      OUTPUTS
    }

    RETRIEVE {
      BY_GRAPH_ALGORITHM
      BY_ALGORITHM_VARIANT
      BY_GRAPH
      BY_VERTEX
      BY_EDGE
      BY_SOURCE
      BY_TARGET
      BY_PATH
      BY_COMPONENT
      BY_SPANNING_TREE
      BY_FLOW
      BY_COMPLEXITY
      BY_CONFIDENCE
    }

    REASON {
      APPLY_RELATIONSHIPS
      APPLY_RULES
      TRACE_BREADTH_FIRST_SEARCH
      TRACE_DEPTH_FIRST_SEARCH
      ANALYSE_DIJKSTRA
      ANALYSE_BELLMAN_FORD
      ANALYSE_FLOYD_WARSHALL
      ANALYSE_A_STAR
      ANALYSE_PRIM
      ANALYSE_KRUSKAL
      ANALYSE_TOPOLOGICAL_SORT
      ANALYSE_COMPONENTS
      ANALYSE_NETWORK_FLOW
      ANALYSE_CORRECTNESS
      ANALYSE_COMPLEXITY
      CHECK_SEMANTIC_EQUIVALENCE
      PRESERVE_UNCERTAINTY
      TRACE_EVIDENCE
      TRACE_PROVENANCE
      GENERATE_EXPLANATION_PATH
    }

    RESPONSE_POLICY {
      DISTINGUISH_GRAPH_ALGORITHM_FROM_GRAPH_DATA_STRUCTURE
      DISTINGUISH_REACHABILITY_SHORTEST_PATH_SPANNING_TREE_AND_FLOW
      PRESERVE_GRAPH_STATE_DIRECTION_WEIGHT_CAPACITY_SOURCE_TARGET_VARIANT_IMPLEMENTATION_AND_CONFIGURATION_CONTEXT
      DISTINGUISH_BFS_DFS_AND_WEIGHTED_PATH_ALGORITHMS
      DISTINGUISH_FORMAL_COMPLEXITY_FROM_EMPIRICAL_PERFORMANCE
      RETURN_CONFIDENCE_WHEN_AVAILABLE
      RETURN_PROVENANCE_WHEN_AVAILABLE
      AVOID_UNSUPPORTED_GRAPH_ALGORITHM_INFERENCE
    }
  }

  TERMINAL {
    RESULT =
      VALIDATED(
        SEMANTICALLY_NORMALISED(
          EVIDENCE_LINKED(
            CONFIDENCE_AWARE(
              GRAPH_ALGORITHM_KNOWLEDGE
            )
          )
        )
      )
  }
}

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ