In graph theory, a **partial cube** is a graph that is an isometric subgraph of a hypercube.^{[1]} In other words, a partial cube can be identified with a subgraph of a hypercube in such a way that the distance between any two vertices in the partial cube is the same as the distance between those vertices in the hypercube. Equivalently, a partial cube is a graph whose vertices can be labeled with bit strings of equal length in such a way that the distance between two vertices in the graph is equal to the Hamming distance between their labels. Such a labeling is called a *Hamming labeling*; it represents an isometric embedding of the partial cube into a hypercube.

Firsov (1965) was the first to study isometric embeddings of graphs into hypercubes. The graphs that admit such embeddings were characterized by Djoković (1973) and Winkler (1984), and were later named partial cubes. A separate line of research on the same structures, in the terminology of families of sets rather than of hypercube labelings of graphs, was followed by Kuzmin & Ovchinnikov (1975) and Falmagne & Doignon (1997), among others.^{[2]}

Every tree is a partial cube. For, suppose that a tree T has m edges, and number these edges (arbitrarily) from 0 to *m* – 1. Choose a root vertex r for the tree, arbitrarily, and label each vertex v with a string of m bits that has a 1 in position i whenever edge i lies on the path from r to v in T. For instance, r itself will have a label that is all zero bits, its neighbors will have labels with a single 1-bit, etc. Then the Hamming distance between any two labels is the distance between the two vertices in the tree, so this labeling shows that T is a partial cube.

Every hypercube graph is itself a partial cube, which can be labeled with all the different bitstrings of length equal to the dimension of the hypercube.

More complex examples include the following:

- Consider the graph whose vertex labels consist of all possible (2
*n*+ 1)-digit bitstrings that have either n or*n*+ 1 nonzero bits, where two vertices are adjacent whenever their labels differ by a single bit. This labeling defines an embedding of these graphs into a hypercube (the graph of all bitstrings of a given length, with the same adjacency-condition) that turns out to be distance-preserving. The resulting graph is a bipartite Kneser graph; the graph formed in this way with*n*= 2 has 20 vertices and 30 edges, and is called the Desargues graph. - All median graphs are partial cubes.
^{[3]}The trees and hypercube graphs are examples of median graphs. Since the median graphs include the squaregraphs, simplex graphs, and Fibonacci cubes, as well as the covering graphs of finite distributive lattices, these are all partial cubes. - The planar dual graph of an arrangement of lines in the Euclidean plane is a partial cube. More generally, for any hyperplane arrangement in Euclidean space of any number of dimensions, the graph that has a vertex for each cell of the arrangement and an edge for each two adjacent cells is a partial cube.
^{[4]} - A partial cube in which every vertex has exactly three neighbors is known as a cubic partial cube. Although several infinite families of cubic partial cubes are known, together with many other sporadic examples, the only known cubic partial cube that is not a planar graph is the Desargues graph.
^{[5]} - The underlying graph of any antimatroid, having a vertex for each set in the antimatroid and an edge for every two sets that differ by a single element, is always a partial cube.
- The Cartesian product of any finite set of partial cubes is another partial cube.
^{[6]} - A subdivision of a complete graph is a partial cube if and only if either every complete graph edge is subdivided into a two-edge path, or there is one complete graph vertex whose incident edges are all unsubdivided and all non-incident edges have been subdivided into even-length paths.
^{[7]}

Many of the theorems about partial cubes are based directly or indirectly upon a certain binary relation defined on the edges of the graph. This relation, first described by Djoković (1973) and given an equivalent definition in terms of distances by Winkler (1984), is denoted by . Two edges and are defined to be in the relation , written , if . This relation is reflexive and symmetric, but in general it is not transitive.

Winkler showed that a connected graph is a partial cube if and only if it is bipartite and the relation is transitive.^{[8]} In this case, it forms an equivalence relation and each equivalence class separates two connected subgraphs of the graph from each other. A Hamming labeling may be obtained by assigning one bit of each label to each of the equivalence classes of the Djoković–Winkler relation; in one of the two connected subgraphs separated by an equivalence class of edges, all of the vertices have a 0 in that position of their labels, and in the other connected subgraph all of the vertices have a 1 in the same position.

Partial cubes can be recognized, and a Hamming labeling constructed, in time, where is the number of vertices in the graph.^{[9]} Given a partial cube, it is straightforward to construct the equivalence classes of the Djoković–Winkler relation by doing a breadth first search from each vertex, in total time ; the -time recognition algorithm speeds this up by using bit-level parallelism to perform multiple breadth first searches in a single pass through the graph, and then applies a separate algorithm to verify that the result of this computation is a valid partial cube labeling.

The **isometric dimension** of a partial cube is the minimum dimension of a hypercube onto which it may be isometrically embedded, and is equal to the number of equivalence classes of the Djoković–Winkler relation. For instance, the isometric dimension of an -vertex tree is its number of edges, . An embedding of a partial cube onto a hypercube of this dimension is unique, up to symmetries of the hypercube.^{[10]}

Every hypercube and therefore every partial cube can be embedded isometrically into an integer lattice. The **lattice dimension** of a graph is the minimum dimension of an integer lattice into which the graph can be isometrically embedded. The lattice dimension may be significantly smaller than the isometric dimension; for instance, for a tree it is half the number of leaves in the tree (rounded up to the nearest integer). The lattice dimension of any graph, and a lattice embedding of minimum dimension, may be found in polynomial time by an algorithm based on maximum matching in an auxiliary graph.^{[11]}

Other types of dimension of partial cubes have also been defined, based on embeddings into more specialized structures.^{[12]}

Isometric embeddings of graphs into hypercubes have an important application in chemical graph theory. A *benzenoid graph* is a graph consisting of all vertices and edges lying on and in the interior of a cycle in a hexagonal lattice. Such graphs are the molecular graphs of the benzenoid hydrocarbons, a large class of organic molecules. Every such graph is a partial cube. A Hamming labeling of such a graph can be used to compute the Wiener index of the corresponding molecule, which can then be used to predict certain of its chemical properties.^{[13]}

A different molecular structure formed from carbon, the diamond cubic, also forms partial cube graphs.^{[14]}