Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

Recipe

Classify a candidate H against G

Use when: you're given a graph G and a candidate H, or just a vertex subset, and asked whether H is a subgraph, an induced subgraph, a spanning subgraph, or none of these

Goal: a definite classification of H against G, backed by the exact vertex and edge check that produced it

Taught in Subgraphs, induced subgraphs, and spanning subgraphs

  1. 1

    Check that V(H) \subseteq V(G), that E(H) \subseteq E(G), and that every edge in E(H) has both endpoints in V(H).

    Example

    Using G with V(G)=\{A,B,C,D,E\} and E(G) = \{AB,AC,AD,CD,BE,DE\}: any H built only from these vertices and only from these six edges passes Step 1 automatically.

    • all three conditions hold — continue to Step 2
    • any condition fails, such as an edge of H not in G, or an edge whose endpoint is missing from V(H) — H is not a subgraph of G at all, stop here

    Why: a subgraph is only ever allowed to drop vertices and edges from G, never to add a vertex, an edge, or an edge with a missing endpoint.

  2. 2

    Compare V(H) to V(G) directly. Spanning requires every vertex of G to survive in H, with the edge set free to be any subset.

    Example

    For H with V(H) = \{A,B,C,D,E\} and E(H) = \{AB, CD\}: V(H) = V(G) exactly, so H is spanning.

    • V(H) = V(G) exactly — H is at least a candidate spanning subgraph, continue to Step 3
    • V(H) is a proper subset of V(G) — H cannot be spanning, but still check Step 3 on this smaller vertex set

    Why: spanning is entirely a vertex-side condition, unrelated to how many of G's eligible edges H actually kept.

  3. 3

    For the vertex set V(H), list every G-edge with both endpoints in V(H); call this the eligible edge set. Compare it to E(H) exactly.

    Example

    For V(H) = \{B,D,E\}, the eligible edges among G's six are BE and DE (BD is not a G-edge). If E(H) = \{BE, DE\}, H is induced on \{B,D,E\}. Back on V(H) = V(G), the eligible set is all six G-edges; the earlier H with E(H) = \{AB,CD\} is missing four of them (AC, AD, BE, DE), so that H is not induced.

    • E(H) equals the full eligible set — H is induced on V(H)
    • E(H) is missing at least one eligible edge — H is not induced

    Why: an induced subgraph is never allowed to selectively drop an edge that both its endpoints qualify for, unlike an ordinary subgraph.

  4. 4

    Passing both Step 2 and Step 3 only happens when V(H) = V(G) and every eligible edge survived, which forces H = G itself. Spanning-but-not-induced keeps every vertex while dropping some eligible edge. Induced-but-not-spanning restricts to fewer vertices while keeping all of them eligible among those. Failing both restricts the vertices and still drops an eligible edge among the ones that remain.

    Why: the two checks are independent, so all four combinations are genuinely possible outcomes, not just two.

Common mistakes

  • Assuming "every vertex kept" by itself makes a subgraph induced -- spanning and induced are independent checks.
  • Building the eligible edge set from the wrong vertex set, using V(G) instead of the smaller V(H) actually being tested.
  • Concluding "not a subgraph" just because H is missing some of G's edges -- an ordinary subgraph is allowed to drop edges freely.
  • Forgetting that dropping even one eligible edge disqualifies H as induced, no matter how many other eligible edges it kept.