Skip to content

[Model] NetworkReliability #235

@isPANN

Description

@isPANN

name: Problem
about: Propose a new problem type
title: "[Model] NetworkReliability"
labels: model
assignees: ''

Motivation

NETWORK RELIABILITY (P96) from Garey & Johnson, A2 ND20. An NP-hard (and not known to be in NP) problem of computing the probability that a set of terminal vertices remains connected when edges fail independently with given probabilities. This problem is fundamental to the design and analysis of communication networks, power grids, and distributed systems. It is marked with (*) in GJ, indicating it is not known to be in NP (the reliability probability may require exponential precision to verify).

Associated rules:

Definition

Name: NetworkReliability
Canonical name: Network Reliability (also: K-Terminal Reliability, All-Terminal Reliability)
Reference: Garey & Johnson, Computers and Intractability, A2 ND20

Mathematical definition:

INSTANCE: Graph G = (V, E), subset V' ⊆ V, a rational "failure probability" p(e), 0 ≤ p(e) ≤ 1, for each e ∈ E, a positive rational number q ≤ 1.
QUESTION: Assuming edge failures are independent of one another, is the probability q or greater that each pair of vertices in V' is joined by at least one path containing no failed edge?

Trait mapping: This is a SatisfactionProblem with Metric = bool. Given a binary edge-survival configuration x ∈ {0, 1}^|E|, evaluate(x) returns true if all terminals in V' are pairwise connected in the subgraph induced by surviving edges (x_e = 1), and false otherwise.

Solver note: The standard BruteForce::find_satisfying() finds one connected edge pattern, NOT the reliability probability. Computing the actual reliability R(G, V', p) requires enumerating all 2^|E| patterns and summing weighted probabilities of connected ones — this is a #P-hard computation beyond the standard solver interface. A custom reliability computation method is needed.

Variables

  • Count: |E| binary variables (one per edge), let m = |E|
  • Per-variable domain: binary {0, 1} — whether edge e survives (1) or fails (0)
  • Meaning: variable x_e = 1 if edge e is operational, x_e = 0 if edge e has failed. A configuration is feasible (evaluate → true) if all terminals in V' are pairwise connected in the subgraph of surviving edges.

Dims

[2; num_edges] — one binary variable per edge.

Schema (data type)

Type name: NetworkReliability
Variants: none (no type parameters)

Field Type Description
graph SimpleGraph The undirected graph G = (V, E)
terminals Vec<usize> The set of terminal vertices V' ⊆ V
failure_probs Vec<f64> Failure probability p(e) for each edge e ∈ E
threshold f64 Reliability threshold q

Notes:

  • This problem is NOT known to be in NP. The answer involves computing a probability that may not have a polynomial-size certificate.
  • The problem is NP-hard (and the underlying counting problem is #P-complete).
  • No type parameters: failure_probs and threshold are fixed f64 fields (problem data, not variant-polymorphic). variant() returns empty.

Size fields

Getter Meaning
num_vertices() Number of vertices
num_edges() Number of edges
num_terminals() Number of terminal vertices
threshold() Reliability threshold q

Complexity

  • Decision complexity: NP-hard, not known to be in NP. Marked with (*) in GJ.
  • Counting complexity: The underlying problem of computing the reliability polynomial is #P-complete (Valiant, 1979). Remains NP-hard even for |V'| = 2 (two-terminal reliability).
  • Best known exact algorithm: Exact computation requires enumerating connected subgraphs or using inclusion-exclusion over min-cuts. Time complexity is exponential: O(2^|E| · |V|) in the worst case for general graphs. Binary Decision Diagram (BDD) methods can compute exact reliability for moderately sized graphs. For graphs with bounded treewidth w, exact computation is possible in O(2^w · n) time.
  • Complexity string: "2^num_edges * num_vertices"
  • Special cases: Polynomial-time solvable for series-parallel graphs, graphs of bounded treewidth, and some other restricted graph classes.
  • References:
    • A. Rosenthal (1974). "Computing Reliability of Complex Systems." Ph.D. thesis, University of California, Berkeley.
    • L.G. Valiant (1979). "The Complexity of Enumeration and Reliability Problems." SIAM Journal on Computing, 8(3):410-421.
    • M.O. Ball (1986). "Computational Complexity of Network Reliability Analysis: An Overview." IEEE Transactions on Reliability, R-35(3):230-239.

Extra Remark

Full book text:

INSTANCE: Graph G = (V,E), subset V' ⊆ V, a rational "failure probability" p(e), 0 ≤ p(e) ≤ 1, for each e ∈ E, a positive rational number q ≤ 1.
QUESTION: Assuming edge failures are independent of one another, is the probability q or greater that each pair of vertices in V' is joined by at least one path containing no failed edge?

Reference: [Rosenthal, 1974]. Transformation from STEINER TREE IN GRAPHS.
Comment: Not known to be in NP. Remains NP-hard even if |V'| = 2 [Valiant, 1977b]. The related problem in which we want two disjoint paths between each pair of vertices in V' is NP-hard even if V' = V [Ball, 1977b]. If G is directed and we ask for a directed path between each ordered pair of vertices in V', the one-path problem is NP-hard for both |V'| = 2 [Valiant, 1977b] and V' = V [Ball, 1977a]. Many of the underlying subgraph enumeration problems are #P-complete (see [Valiant, 1977b]).

How to solve

  • It can be solved by (existing) bruteforce. Enumerate all 2^|E| edge survival/failure patterns, for each pattern check if terminals V' are pairwise connected (BFS/DFS), sum the probabilities of connected patterns, compare to threshold q.
  • It can be solved by reducing to integer programming. (Not directly — this is a probability computation problem, not a standard optimization problem.)
  • Other: BDD-based exact methods for moderate-size graphs; Monte Carlo simulation for estimation; inclusion-exclusion over min-cuts; factoring/decomposition methods for series-parallel graphs.

Example Instance

Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 8 edges:

  • Edges: {0,1}, {0,2}, {1,3}, {2,3}, {1,4}, {3,4}, {3,5}, {4,5}
  • Terminals V' = {0, 5}
  • Failure probabilities: all p(e) = 0.1 (each edge fails with 10% probability, survives with 90%)
  • Threshold q = 0.95

Analysis (two-terminal reliability from vertex 0 to vertex 5):

  • There are multiple paths from 0 to 5:
    • Path 1: 0→1→3→5 (edges {0,1}, {1,3}, {3,5})
    • Path 2: 0→2→3→5 (edges {0,2}, {2,3}, {3,5})
    • Path 3: 0→1→4→5 (edges {0,1}, {1,4}, {4,5})
    • Path 4: 0→2→3→4→5 (edges {0,2}, {2,3}, {3,4}, {4,5})
  • Total search space: 2^8 = 256 edge survival/failure patterns.
  • Brute-force enumeration over all 256 patterns yields:
    • 91 connected configurations (terminals 0 and 5 are pairwise reachable)
    • 165 disconnected configurations (terminals not connected)
  • Exact reliability = 0.9684 (sum of probabilities of all 91 connected patterns)

Expected Outcome

  • Reliability = 0.9684 > q = 0.95 → Answer: YES (the network reliability exceeds the threshold)
  • The example has 165 infeasible (disconnected) configurations out of 256 total, demonstrating a non-trivial instance where edge failures can disconnect the terminals.

Metadata

Metadata

Assignees

No one assigned

    Labels

    modelA model problem to be implemented.

    Type

    No type

    Projects

    Status

    OnHold

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions