AC-3 2026-10-25
An arc consistency algorithm maintaining a work list of directed constrained variable pairs. Revising deletes each value of with no compatible value in . If shrinks, incoming arcs are reconsidered; the just-used neighbor need not be included, since deleted values had no support in and hence supported no surviving value there. Initially empty constraint domains are rejected before processing.
Each deletion preserves every complete solution: a solution using the removed value would supply its missing support. Therefore an empty constraint domain certifies impossibility. Successful termination establishes arc consistency but need not establish satisfiability. A triangle of two-valued inequality constraints supplies a counterexample: all values have pairwise support, but no assignment can satisfy all three inequalities.
For variables, constrained pairs and maximum constraint domain size , assume constant-time compatibility tests for combined pair relations. A revision costs , and each shrinking source constraint domain can cause at most rounds of reconsideration of its incoming arcs. Thus there are revisions and time complexity . Fixed , including two-valued constraint domains, gives linear time in .
Adversary argument 2026-10-31
A method for proving that an algorithm must perform a certain amount of work: supply observations compatible with more than one possible input until enough information has been acquired to distinguish the required outputs. For exact membership in an arbitrary array, answering every inspected location with a value other than the target forces inspection of every location in the absent case, since any uninspected location could contain the target.
Alan Turing Created 2026-10-20 Updated 2026-10-24
Figure 1.
Portrait of Alan Turing
. Unknown photographer; existing Commons crop by David Levy from Alan Turing az 1930-as években.jpg. Public domain in the UK under Commons' PD-UK-unknown statement; Commons flags possible US copyright restored under URAA. No worldwide free-license claim. Source and usage information on the linked Wikimedia file page. Source.
Algorithm Created 2026-09-24 Updated 2026-10-13
An algorithm is a finite, precise procedure for transforming an input into an output.
Here "finite" refers to the description: a short algorithm can perform arbitrarily many steps on increasingly large inputs. Solving a computational problem additionally requires termination and the specified output on every permitted input. State assumptions explicitly: binary search requires a sorted array.
An algorithm is an idea that can have implementations in different programming languages. Its explanation should make three things visible: the permitted inputs, the rule for each step, and the meaning of the returned output. Algorithm correctness then separates finding the right answer from eventually finishing; time complexity asks how much work finishing requires.
A particularly useful design question is: what knowledge survives each step? In binary search, it is the location of every possible match inside the remaining candidate range. Writing that fact as a loop invariant turns an intuitive shortcut into a procedure whose discarded candidates can be justified. This often helps discover the algorithm, rather than merely check it afterward.
Algorithm correctness Created 2026-10-13 Updated 2026-10-18
Partial correctness means that, if the algorithm terminates on a permitted input, its output meets the formal specification. Total correctness additionally requires algorithm termination on every permitted input.
A precondition describes permitted starting circumstances; a postcondition describes the required result. Partial correctness says that starting with and finishing implies . Total correctness also guarantees finishing. A loop invariant supplies the connection between these conditions during repeated steps.[ref]
Correctness is relative to a formal specification. Returning the first entry of an array correctly implements "return the first entry", but fails "return the maximum" on . A fast wrong answer does not acquire algorithm correctness from its time complexity. Numerical closeness matters only when the formal specification allows an approximation. Software testing and test coverage provide evidence about selected executions; they do not by themselves establish algorithm correctness for every permitted input.
Algorithm design 2026-10-31
Constructing an algorithm that meets a stated specification. Choices such as divide-and-conquer algorithms, dynamic programming and greedy algorithms organize the construction; an algorithm correctness argument establishes that the result meets the specification.
Analysis of algorithms 2026-10-31
Studying an algorithm's resource use under a stated cost model. Time complexity, space complexity and amortized analysis answer different questions, so an operation count should specify the input-size parameter and what each primitive operation costs.
For dimension-compatible matrices, . In coordinates both sides have entry ; distributing and regrouping the finite sums proves equality. This permits accumulating a product left to right even when a recursive algorithm groups the same transformations from the right. It does not permit changing factor order, because matrix multiplication is generally not commutative.
Auxiliary space 2026-10-20
The extra working storage required by an algorithm, excluding the storage occupied by its input. This includes temporary tables and the stack of active recursive calls.
Binary long division 2026-10-31
For integers and , an integer division algorithm determines the binary numeral system digits of a quotient by testing and conditionally subtracting successively halved multiples of the divisor. The loop invariant , together with , makes each step a halving of the remaining quotient interval. Start with and large enough that . To decrease by one, subtract from and add to exactly when . Both branches preserve the displayed equality and establish . When , the quotient and remainder conditions hold.
Binary powering multiplication count Created 2026-10-14 Updated 2026-10-24
For the optimized left-to-right exponentiation by squaring algorithm, let be the length of the binary expansion of a positive integer , and let be its Hamming weight, the number of digits equal to one. There are exactly digits after the leading one, and exactly remaining ones. Therefore the count is
Here counts squarings and counts further multiplications by the base; every squaring counts as one multiplication in . Assignment, digit reading, and any inversion are outside this count. The formula includes , which requires zero multiplications; define separately.
For a fixed length , the bounds are . A power of two reaches the lower bound because its Hamming weight is one; reaches the upper bound because all digits are one. For , and , giving . Thus the arithmetic operation count is in Big O notation, but inputs of similar magnitude can have different counts.
Figure 1.
Exact multiplication counts for optimized exponentiation by squaring depend on binary length and Hamming weight
. For positive exponents through , dots show , including each squaring. The dashed curves bound all counts at each binary length. Successive multiplication needs operations. The second panel compares squarings and further multiplications for exponents . These are exact counts, not timing measurements. Details.
This is a count for the specified algorithm, not a claim that it always minimizes multiplications among all methods. For instance, at the count is six, but the powers with exponents can be built in five multiplications: square, multiply by , square, square, then multiply by the already stored . Saving operations this way uses a different schedule and stored intermediate powers.
Bit complexity 2026-10-31
The number of elementary operations on bits required by an algorithm. Arithmetic-operation counts treat operations on entire integers as units, whereas bit complexity charges for the sizes of their operands. An algorithm using few multiplications can therefore require substantially more bit operations when the operands grow. State the model when comparing bounds for repeated squaring or dynamic programming counts.
Jack Bresenham's raster graphics algorithm selects a thin sequence of pixels to represent a line segment by exact incremental integer arithmetic. For a first-octant segment with , a scaled midpoint line decision chooses between the next same-row and next higher-row pixels.
Brouwer fixed-point theorem Created 2026-09-24 Updated 2026-10-14
The Brouwer fixed-point theorem says that every continuous map has a fixed point when is a nonempty compact set and a convex set in a finite-dimensional vector space over the real numbers. Equivalently, take for a finite , with the usual Euclidean space structure: there is some such that . The conclusion guarantees at least one fixed point, without asserting uniqueness or telling us how quickly to find one. [ref]
The standard pictures are a closed ball, including a closed unit ball, and a simplex. A filled disk qualifies; its bounding circle alone does not. A probability simplex also qualifies even though its dimension is smaller than that of its ambient Euclidean space. The hypotheses have concrete meanings: being a convex set keeps every line segment between allowed points inside , and compactness prevents escape or loss of a limiting point. In Euclidean space, the Heine-Borel theorem identifies compact sets with closed sets that are bounded sets. Crucially, every output must belong to the same as the input.
For a fully computable example, let be the filled unit disk. Apply a counterclockwise quarter-turn rotation, shrink by , and add a translation:
This affine map is a continuous map. Because the rotation preserves the Euclidean norm, the triangle inequality gives, for every ,
Thus the whole image lies strictly inside . More precisely, it is a disk of radius centred at . This containment check is what makes the Brouwer fixed-point theorem applicable; a formula being a continuous map by itself would not suffice.
The fixed point can now be found by a system of linear equations:
Indeed, substitution gives . Its Euclidean norm is , safely inside . The figure shows arrows from sample inputs to their outputs; an arrow disappears at the fixed point because the displacement vanishes there.
Figure 1.
A quarter-turn, shrinking, and translation keep a disk inside itself
. Details.
Repeated iterations of a map happen to succeed for this example. Starting at and setting gives , , and . Subtracting the fixed point equation yields , so the Euclidean distance to shrinks by exactly each step. This extra fact follows from the contraction mapping property and the Banach fixed-point theorem. It is additional information beyond the Brouwer fixed-point theorem.
The distinction becomes visible with two simpler continuous maps of the same disk. The pure rotation has exactly one fixed point, , since and force both to vanish. Yet iterations of a map starting at here cycle through , , and forever. Their Euclidean distance from stays one, so there is no convergence in a metric space. The reflection has an entire line segment of fixed points, namely . Starting off that line segment produces an alternating pair. Existence, uniqueness, and convergence of iterations of a map are separate questions.
Figure 2.
Existence of a fixed point does not imply uniqueness or convergence of iteration
. Details.
Removing hypotheses changes the answer. Restrict the same quarter-turn rotation to the circle . It remains a continuous map into that compact set, but its only possible fixed point, , has been removed. The circle is not a convex set. Conversely, on the unbounded convex set , the translation has no fixed point; on the open interval , also has none. Neither domain is a compact set. The finite-dimensional closed ball statement should likewise not be extended to arbitrary infinite-dimensional vector spaces, where a closed ball need not be a compact set.
The one-dimensional version explains the connection to the intermediate value theorem. For a continuous map , put . Then and , so the intermediate value theorem gives for some . In higher dimensions, the Brouwer fixed-point theorem supplies a corresponding existence principle when this scalar sign argument is unavailable. Its practical value is ensuring that a proposed equation has a solution once a suitable domain is found; it supplies no general promise of a fast algorithm.
A useful application is positive matrix eigenvector from simplex normalization: rescale the output of a strictly positive matrix to make its entries sum to one. For example, take
On this probability simplex, has entry sum , so the normalized continuous map is . Both entries are positive and sum to one, keeping the image inside the probability simplex. Its fixed point equation is , hence . Consequently satisfies : a strictly positive eigenvector with eigenvalue . In larger dimensions, the Brouwer fixed-point theorem guarantees the corresponding positive eigenvector without requiring us to solve a system of linear equations in advance. The fixed point expresses preservation of relative weights, rather than preservation of their unnormalized size.
Proofs can be approached through the no-retraction theorem or Sperner's lemma. In the latter approach, increasingly fine triangulations locate approximate fixed points; compactness supplies a convergent subsequence, and continuous maps turn its limit into an exact fixed point. [ref]
A primary historical reference is L. E. J. Brouwer's 1911 paper Über Abbildung von Mannigfaltigkeiten, whose digitized original is hosted by Zenodo under DOI 10.1007/BF01456812. This gives a direct route to the early literature behind the Brouwer fixed-point theorem. [ref]