Weak coloring

In graph theory, a weak coloring is a special case of a graph labeling. A weak k-coloring of a graph G = (V, E) assigns a color c(v) ∈ {1, 2, ..., k} to each vertex vV, such that each non-isolated vertex is adjacent to at least one vertex with different color. In notation, for each non-isolated vV, there is a vertex uV with {u, v}E and c(u) ≠ c(v).

Weak 2-coloring.

The figure on the right shows a weak 2-coloring of a graph. Each dark vertex (color 1) is adjacent to at least one light vertex (color 2) and vice versa.

Constructing a weak 2-coloring.

Properties

A graph vertex coloring is a weak coloring, but not necessarily vice versa.

Every graph has a weak 2-coloring. The figure on the right illustrates a simple algorithm for constructing a weak 2-coloring in an arbitrary graph. Part (a) shows the original graph. Part (b) shows a breadth-first search tree of the same graph. Part (c) shows how to color the tree: starting from the root, the layers of the tree are colored alternatingly with colors 1 (dark) and 2 (light).

If there is no isolated vertex in the graph G, then a weak 2-coloring determines a domatic partition: the set of the nodes with c(v) = 1 is a dominating set, and the set of the nodes with c(v) = 2 is another dominating set.

Applications

Historically, weak coloring served as the first non-trivial example of a graph problem that can be solved with a local algorithm (a distributed algorithm that runs in a constant number of synchronous communication rounds). More precisely, if the degree of each node is odd and bounded by a constant, then there is a constant-time distributed algorithm for weak 2-coloring.[1]

This is different from (non-weak) vertex coloring: there is no constant-time distributed algorithm for vertex coloring; the best possible algorithms (for finding a minimal but not necessarily minimum coloring) require O(log* |V|) communication rounds.[1][2][3] Here log* x is the iterated logarithm of x.

gollark: I was looking at trying to address the main issue with it - the possibility of```luatextutils.unserialise [[ (function() while true do end end)()]]```things (its _ENV is sandboxed, so it can't do anything other than denial of service attacks) but I think you would *basically* need a parser to prevent that.
gollark: `textutils.unserialize` is really bad and just uses `load` internally, see.
gollark: No, that's a valid table.
gollark: > we're talking about how regular people have no obligation to know what the fuck a word size isThey could probably ask someone who might know. Although they may not think of it.
gollark: and not just have a route for each.

References

  1. Naor, Moni; Stockmeyer, Larry (1995), "What can be computed locally?", SIAM Journal on Computing, 24 (6): 1259–1277, CiteSeerX 10.1.1.29.669, doi:10.1137/S0097539793254571, MR 1361156.
  2. Linial, Nathan (1992), "Locality in distributed graph algorithms", SIAM Journal on Computing, 21 (1): 193–201, CiteSeerX 10.1.1.471.6378, doi:10.1137/0221015, MR 1148825.
  3. Cole, Richard; Vishkin, Uzi (1986), "Deterministic coin tossing with applications to optimal parallel list ranking", Information and Control, 70 (1): 32–53, doi:10.1016/S0019-9958(86)80023-7, MR 0853994.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.