a heuristic search algorithm that attempts to find a desired goal using a heuristic function to estimate the distance from a given node to the goal.
abstract data type
a description of operations on a data type that could have multiple possible implementations.
a representation of a graph in which each node has a list of nodes that are adjacent to it, i.e. connected to it by an arc.
a representation of a graph in which a boolean matrix contains a 1 at position (i,j) iff there is an arc from node i to node j.
an abstracted function that describes the amount of computer time or memory space required by an algorithm, as a function of problem size.
a data structure that implements a complete binary tree within an array, such that every parent node has a value that is less than the value of either of its children.
search of a binary tree or other structure, in which the size of the set to be searched is cut in half at each step.
a number that is defined as an object, so that it has a runtime type and methods that can be used, e.g. Integer in Java.
in a search tree, the number of children of a given node. Individual nodes will vary, so an average value may be used.
a tree with a high branching factor, to minimize the number of disk accesses required to access a desired record.
a queue implemented within an array, where the first element of the array logically follows the last element.
the act of comparing two values to determine which is greater according to some ordering.
1. in Lisp, the function that constructs a pair of pointers, or basic element of list structure. 2. to make a cons data structure. 3. a cons data structure.
describes a function that makes a new data structure but does not modify its arguments.
in a PERT chart or scheduling graph, a path from the initial state to the goal such that any increase in time required along the critical path will increase the time to complete the whole project.
a graph such that a large fraction of possible connections among nodes are present, i.e. the number of edges is of the order of the number of vertices squared. cf. sparse graph.
a search in which children of a node are considered (recursively) before siblings are considered.
an optimal greedy algorithm to find the minimum distance and shortest path in a weighted graph from a give start node.
discrete event simulation
a simulation in terms of events, in which the highest-priority (least time) event is removed from an event queue and executed, which may have the effect of scheduling future events.
divide and conquer
a problem-solving strategy in which a problem is broken down into sub-problems, until simple subproblems are reached.
a binary Boolean function whose output is 1 if its inputs are different. Abbreviated XOR.
a way of implementing trees that uses two pointers per node but can represent an arbitrary number of children of a node.
storage that is no longer pointed to by any variable and therefore can no longer be accessed.
a series in which each successive term is multiplied by a constant less than 1, e.g. 1 + 1/2 + 1/4 + 1/8 + ...
a formal description of a language in terms of vocabulary and rules for writing phrases and sentences.
a function that is deterministic but randomizing, i.e. whose output is a relatively small integer that appears to be a random function of the key value.
a function that estimates the distance from a given node to the goal in A* search. More generally, a method that generally gives good advice about which direction to go or how to approach a problem.
describes a data structure that cannot be changed once it has been created, such as Integer or String in Java.
describes a mapping in which each element of the domain maps to a single element of the range. Also, one-to-one.
an order of processing a tree in which the parent node is processed in between its children.
an O(n^2) search algorithm that's similar to the way people sort playing cards. Stable, in-place and on-line. First removes element from list, inserts it in the correct position, and repeats until finished.
a problem that is so hard (typically exponential) that it cannot be solved unless the problem is small.
an object containing data and methods to iterate through a collection of data, allowing processing of one data item at a time.
in MapReduce, a program that processes an element of the input and emits one or more (key, value) pairs.
the use of several kinds of memory hardware in a computer system, where the fastest memory (e.g. cache) is smallest, slower memory (e.g. RAM) is larger, and the slowest memory (e.g. disk) is largest.
the processing of data in such a way that data that are located near each other by memory address are accessed nearby in time.
O(n*log(n)) search algorithm; stable, not in-place; breaks data in half, sorts, merges, repeats.
minimum spanning tree
a tree formed from the nodes of a graph and a subset of its edges, such that all nodes are connected and the total cost of the edges is minimal.
a runtime error that occurs when an operation such as a method call is attempted on a null pointer.
describes a mapping in which each element of the domain maps to a single element of the range. Also, injective.
describes a mapping in which each element of the range is the target of some element of the domain. Also, surjective.
a description of the kinds of objects that exist in a computer program, e.g. a Java class hierarchy.
in a search tree, a program that changes a state into a child state, e.g. a move in a game.
analysis of a sentence of a language to determine the elements of the sentence and their relationship and meaning.
a representation of a class of objects, containing some constant elements in relation to variable elements.
a queue in which the highest-priority elements are removed first; within a priority value, the earliest arrival is removed first.
a data structure representing a sequence of items, which are removed in the same order as they were inserted.
O(n*log(n)) search algorithm; in-place, not stable. Picks a pivot, reorders so lesser objects are in front of pivot, recursively sorting sub-lists of lesser and sub-lists of greater values.
an O(n*k) search algorithm where K = keylength. Stable. Sorts input into bins based on the lowest digit; then combines bins in order and sorts on the next highest digit & so forth.
an algorithm in which the data to be processed or the device to process it is randomly selected.
a condition of the input data where the data will be handled by call(s) to the same program.
a self-balancing binary tree in which nodes are "colored" red or black. The longest path from the root to a leaf is no more than twice the length of the shortest path.
a stack containing a stack frame of variable values for each active invocation of a procedure.
the ability of an algorithm or hardware system to grow to handle a larger number of inputs.
an extra record at the start or end of a data structure such as a linked list, to simplify the processing.
given two sets, the set of elements of the first set that are not members of the second set.
any effect of a procedure other than returning a value, e.g. printing or modifying a data structure.
in a PERT chart or scheduling graph, the amount of time by which the time of an activity could be increased without affecting the overall completion time.
to modify the order of a set of elements so that a desired ordering holds between them, e.g. alphabetic order.
a self-balancing binary tree that places recently accessed elements near the top of the tree for fast access.
describes a sort algorithm in which the relative position of elements with equal keys is unchanged after sorting.
a section of the runtime stack holding the values of all variables for one invocation of a procedure.
describes a mapping in which each element of the range is the target of some element of the domain. Also, onto.
a data structure that links names to information about the objects denoted by the names.
a function whose value either does not involve a recursive call, or is exactly the value of a recursive call.
being close together in time, i.e. memory accesses that occur within a short time of each other.
a linear ordering of nodes of an acyclic graph, such that a node follows all of its graph predecessors in the ordering.
changing the links in a binary tree to change the relative heights of the child subtrees, while leaving the sort order of the tree unchanged.
converting an abstract syntax tree into a sentence in a language, such as a programming language.
an ordering that can be guaranteed to terminate, e.g. starting at a positive integer and counting down to 0.
Extensible Markup Language, a way of writing data in a tree-structured form by enclosing it in tags.