Michał Pilipczuk Created 2026-10-13 Updated 2026-11-05
Coauthor with Tuukka Korhonen and Giannos Stamoulis of research on graph minors and disjoint paths. Their work connects structural graph theory with algorithms for detecting specified configurations.[ref]
Minor Containment and Disjoint Paths in almost-linear time by Tuukka Korhonen and others. author attribution and the named work’s subject
Model of computation 2026-11-05
A model of computation specifies how inputs are represented, which states and operations are available, how execution proceeds and what counts as its output and resource cost. Examples include Turing machines, random-access machines, Boolean circuits and the lambda calculus. A mathematical algorithmic claim is interpreted within such a model, even when the model is left implicit.
For example, adding two integers is one instruction in a unit-cost machine model. In a bit-cost model, operating on arbitrarily long integers requires time depending on their encoded lengths. A bound counting arithmetic operations therefore need not be a bound on bit complexity. Likewise, a circuit family can supply separate hardware for each input length, while a uniformity requirement asks one algorithm to generate those circuits. Stating the model makes efficiency comparisons meaningful and separates questions of computability from the cost of a chosen representation.
Nimrod Megiddo Created 2026-10-14 Updated 2026-10-24
Homepage: theory.stanford.edu/~megiddo/
Numeral Created 2026-10-14 Updated 2026-11-05
A numeral is a written expression representing a number. The number five can be written as the decimal numeral , the binary numeral , or the Roman numeral V. The expressions differ while the represented integer is the same.
This distinction matters when an algorithm examines numerical digits. A palindromic number, for example, is defined through its representation in a specified radix, rather than through the appearance of an abstract number. The integer five is a palindrome as the one-digit decimal numeral and as the binary numeral , whereas ten is written in decimal and in binary, neither of which is a palindrome.
Numeral notation Created 2026-10-20 Updated 2026-11-05
Numeral notation specifies how a number is written, including its digit alphabet, base and separators. The same integer can appear as decimal , binary or hexadecimal . A base marker distinguishes the written numeral from an otherwise identical string in another numeral system.
This differs from expression notation, which also describes operations on represented numbers. For example
0x10 names one integer in a programming convention, while gives an expression evaluating to that same integer. Keeping representation separate from value is important in algorithms involving digit constraints or input length. Numerical analysis Created 2026-09-24 Updated 2026-10-14
Numerical analysis designs algorithms that approximate mathematical answers while controlling cost and error. Its central question is how much of a computed answer can be trusted. Finding a zero of a function, evaluating an integral, solving a linear system, and evolving an ordinary differential equation all demand choices about accuracy, work, and the information available. MIT's numerical-methods course explicitly treats performance and accuracy as joint concerns.[ref]
https://ocw.mit.edu/courses/18-335j-introduction-to-numerical-methods-spring-2019/pages/week-1/. Steven G. Johnson, MIT 18.335J, Week 1, 2019
Three questions organize error analysis. Truncation error measures the approximation introduced by an algorithm even in exact arithmetic; roundoff error comes from finite precision; the condition number measures sensitivity inherent in the problem. Numerical stability asks how the chosen algorithm propagates perturbations. These distinctions suggest different remedies: refine an approximation, change precision or arithmetic, or improve the accuracy of the input.
For example, the square root has relative condition number for : a small relative change in produces about half that relative change in . In contrast, has relative condition number . Changing to changes to about : an input change of about produces an output change of about . This sensitivity exists even with exact arithmetic. MIT's conditioning lecture separates the condition number from roundoff error in precisely this way.[ref]
https://ocw.mit.edu/courses/18-335j-introduction-to-numerical-methods-spring-2019/pages/week-2/. Steven G. Johnson, MIT 18.335J, Lecture 5: Condition Numbers, 2019
Numerical linear algebra Created 2026-09-24 Updated 2026-10-14
Numerical method Created 2026-10-14 Updated 2026-10-18
A numerical method is an algorithm for computing an exact or approximate solution to a mathematical problem through finitely many arithmetic operations and other prescribed steps. For example, Gaussian elimination solves a linear system exactly in exact arithmetic, whereas finite precision can introduce roundoff error.
Oded Schramm Created 2026-10-14 Updated 2026-11-05
Oded Schramm coauthored Every decision tree has an influential variable by Ryan O'Donnell and others. The paper connects the variance of a Boolean function to the influences of its input coordinates and the probabilities that a decision tree examines them. This makes the observations performed by an algorithm constrain the structure of the function it computes.[ref]
Every decision tree has an influential variable by Ryan O'Donnell and others. author list and main inequality
Portrait of Oded Schramm
. Renate Schmid + lilyu. CC BY-SA 3.0, via Wikimedia Commons. Source. One-row in-place Life update 2026-10-13
On a finite rectangular Conway's Game of Life board stored as an array of Boolean variables, retain the preceding row's old values in one auxiliary row. Before overwriting a column, retain rolling sums of the old three-cell vertical columns. Their sum minus the old center is the old neighbor count. Read the next column before changing the current one; replace the saved row entry by the old current cell. The invariant is that every count uses the previous generation, just as in the two-array algorithm. For a board with rows and columns this uses auxiliary storage and time. The boundary convention must still be implemented explicitly. The Life blinker and Life glider provide exact expected generations for checking it.
Orientation predicate 2026-11-05
An orientation predicate determines on which side of an oriented geometric object a point lies. For planar points , compute the determinantIn coordinates with rightward and upward, means a counterclockwise turn from through to , a clockwise turn, and collinearity. Its magnitude is twice the area of the triangle.
For and , gives , while gives . Convex hull and segment-intersection algorithms use these signs to make discrete decisions. A tiny round-off error can reverse a nearly zero sign and make those decisions inconsistent. Jonathan Richard Shewchuk's adaptive arithmetic computes extra precision only when needed to certify the sign for the supplied coordinates.[ref]
Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates by Jonathan Richard Shewchuk. orientation tests, determinant signs and adaptive exact arithmetic
Parameterized complexity Created 2026-10-24 Updated 2026-10-31
Parameterized complexity studies an algorithm's resource use as a function of both the encoded input length and a distinguished nonnegative integer parameter . A small solution size, a dimension or a structural property of a graph can serve as the parameter. Fixed-parameter tractability allows arbitrary computable dependence on while keeping the exponent of independent of .
Pascal (programming language) 2026-11-05
Pascal is a structured programming language designed by Niklaus Wirth for expressing algorithms with explicit data types, procedures and organized control statements. Its arrays and records support concrete data organization, while nested procedures permit local decomposition of a program.
For example, a procedure summing an array can declare an integer loop index and an accumulator, initialize the accumulator to zero, and use a
for loop to add each entry. Stating the supported integer range remains necessary: a clear source-level sum can still overflow bounded arithmetic. Niklaus Wirth's account dates the Pascal project to1968–1972 and records an operational first compiler in1970, followed by use in introductory teaching.[ref]Summary of projects 1962-1999 by Niklaus Wirth. Pascal,1968–1972
For each user define its set of eligible ads byThis uses the intersection of demographic-group memberships: belonging to one advertised group suffices, because the eligibility condition is a set union. A user in several groups still receives at most one ad.
A direct algorithm is to process users independently. For user , scan ads until finding one for which some group belongs to both and . Assign that ad and stop processing this user. If no such ad exists, leave the user unassigned. There is no upper bound on the number of different users who can receive the same ad, so these decisions do not compete for an ad resource.
For correctness, every produced impression has a shared permitted group, and the stopping rule assigns at most one ad to each user. Conversely, a user with cannot receive an ad in any feasible solution. Since every other user can contribute at most one impression, every feasible solution has value at mostThe algorithm attains this bound, provingRepresent each membership set by a length- array of Boolean variables. Testing one user-ad pair costs , so all tests and input setup take time in Big O notation, which is polynomial time in all three parameters. For positive , this simplifies to .
A maximum flow formulation gives the same result if desired: add edges with flow network edge capacity , with flow network edge capacity exactly when , and with flow network edge capacity . By the integral max-flow theorem, an integral maximum flow selects valid impressions. Setting the last flow network edge capacity to would impose an extra restriction absent from this paper.
Past exam of the computer science course of the University of Oxford 2015 Databases 3 d Solution 2026-10-31
Let contain the database attributes of , and let contain the given functional dependencies for . To compute the attribute closure , start with and repeatedly add for every functional dependency with , stopping when a full scan adds nothing.
Enumerate every . For each, test whether is not a superkey but becomes one on adding :If no enumerated passes both tests, return no. A direct implementation isIf a candidate key contains , choose . Minimality makes fail the superkey test while passes it, so the algorithm finds a witness.
for each subset X of attributes(R) minus {a}:
if closure(X, F) != attributes(R):
if closure(X union {a}, F) == attributes(R):
return yes
return noConversely, suppose an enumerated passes. Starting from , repeatedly discard any database attribute other than whose removal preserves the superkey property. The process terminates at a superkey minimal with respect to these deletions. Removing cannot leave a superkey: , and a subset of , which is not a superkey, cannot determine more database attributes than . Hence is a candidate key containing . The algorithm need not carry out this minimization to return the correct yes/no answer; it establishes why the witness test suffices.
For an explicit analysis of algorithms, let be the total encoded length of the functional dependencies, counting their left and right database attribute occurrences and delimiters. With Boolean membership arrays, one complete dependency scan costs . There are at most productive scans, followed by one unproductive scan, so a naive attribute closure costs . There are subsets and at most two attribute closure computations per subset. ThusThis is an exponential-time algorithm in the number of database attributes, not a polynomial-time claim. Subsets can be generated successively rather than stored all at once. The argument applies to functional dependencies within the database relation ; dependencies belonging to unrelated database relations do not constrain its candidate keys.
A first-order theory in a fixed first-order signature is a set of first-order sentences. Under the closed-theory convention used in the question, it contains all its semantic entailments: implies . One can equivalently begin with a set of axioms and take its closure under consequence.
A complete theory is a consistent first-order theory that decides every first-order sentence in its first-order signature:Consistency ensures that exactly one of these alternatives holds.
A decidable theory is one for which an algorithm always terminates and determines whether a given first-order sentence is a consequence:If the first-order theory is already closed under consequence, this is its membership problem. It is a condition on the consequences, not merely on whether the chosen set of axioms has a decidable membership test.
First determine the width of each column by finding the longest rendered String data type value in it. Independently determine the number of rows as the largest column size. An empty column has width zero. Then traverse rows first and columns second: render a present entry with spaces on the appropriate side, or render an absent entry as an entire column of spaces. Put one separating space between adjacent columns and a newline after each row. In particular, an exhausted column must not shift later entries into its position.
Here is executable Java for the algorithm.
Column, defined in part (e), is an ordinary list of Data. The object interface in part (c) supplies the three queries used below. Each query sees stable content during this call; concurrent changes to formatting are outside this contract.static String replicate(char c, int n) {
StringBuilder s = new StringBuilder();
for (int i = 0; i < n; ++i) s.append(c);
return s.toString();
}
static String printData(List<Column> columns) {
int[] width = new int[columns.size()];
int rows = 0;
for (int c = 0; c < columns.size(); ++c) {
Column column = columns.get(c);
rows = Math.max(rows, column.size());
for (Data d : column)
width[c] = Math.max(width[c], d.length());
}
StringBuilder out = new StringBuilder();
for (int r = 0; r < rows; ++r) {
for (int c = 0; c < columns.size(); ++c) {
if (c != 0) out.append(' ');
Column column = columns.get(c);
if (r >= column.size()) {
out.append(replicate(' ', width[c]));
} else {
Data d = column.get(r);
String text = d.toString();
String pad = replicate(' ', width[c] - text.length());
out.append(d.leftJustified() ? text + pad : pad + text);
}
}
out.append('\n');
}
return out.toString();
}The algorithm uses the stipulated fixed-width characters and assumes entries contain no embedded newlines. If the column widths are and , every emitted row has the same width,An empty collection, or a collection consisting entirely of empty columns, gives the empty String data type value. Spaces at the end of a short last row are harmless and preserve the rectangular layout.
Past exam of the computer science course of the University of Oxford 2018 Algorithms 1 a Solution 2026-10-31
A binary search tree is a binary tree storing distinct keys from a total order, with every key in a node's left subtree smaller than that node's key and every key in its right subtree larger. The condition concerns entire subtrees, not just immediate neighbours.
For membership, start at the root of a tree and compare the target with the current key. Return true on equality; continue into the left subtree for a smaller target and the right subtree for a larger target; return false on an empty subtree. The binary search tree ordering ensures that a discarded subtree cannot contain the target. Each step descends one level, so the algorithm terminates and uses time complexity for height of a binary tree , under constant-time key comparison.
Past exam of the computer science course of the University of Oxford 2018 Algorithms 2 f Solution 2026-10-31
For a connected graph with at least one edge, run depth-first search and output the set of internal vertices of a rooted tree in its discovery tree . Part (d) proves that is a vertex cover. It is also connected: every ancestor of an internal vertex is internal, so the graph path in from that vertex to the root stays inside . The root is internal when .
For the approximation guarantee, choose a maximum-size proper matching in a rooted tree of , whose existence is supplied. It is used only in the analysis; the algorithm need not construct it. Since every matched edge uses two distinct vertices,By part (e), . ThereforeThe final inequality holds because every vertex cover of , connected or otherwise, must use at least one distinct endpoint for each of the disjoint edges in . Thus this is a 2-approximation algorithm in time complexity.
For completeness, a disconnected input needs a feasibility check: if two different connected components of a graph contain edges, no connected vertex cover can meet both. If exactly one component contains edges, run the construction on that component and ignore isolated vertices. If there are no edges, the empty vertex cover is optimal when an empty solution is permitted; if a nonempty connected solution is required, any single vertex is optimal for a nonempty input. These conventions cover the boundary cases omitted from the main approximation argument.
Past exam of the computer science course of the University of Oxford 2019 Algorithms 3 a Solution 2026-10-25
A parameterized decision problem is fixed-parameter tractable if there is an algorithm deciding inputs of encoded length and parameter in running time at most , where is a computable function and is a constant independent of . Arbitrarily expensive dependence on the parameter is permitted; putting in the exponent of does not by itself establish fixed-parameter tractability.
For a minimization problem with nonnegative costs, a factor-two approximation algorithm runs in polynomial time, always returns a feasible solution, and satisfies on every feasible input. A feasible solution also satisfies . If the optimum is zero, the guarantee requires an answer of zero cost.
