Improvement in Progress ..
Master Computer Science Lingo: Our Comprehensive Glossary
A step-by-step procedure for solving a problem or achieving a specific task in a finite amount of time.
A notation used to describe the upper bound of an algorithm's running time, often used to compare the efficiency of different algorithms.
An efficient algorithm for finding an item from a sorted list of items.
An algorithm that solves a problem by trying all possible solutions and then choosing the best one.
A general algorithmic technique that incrementally builds candidates to the solutions, and abandons each partial candidate `c` ('backtracks') as soon as it determines that `c` cannot possibly be completed to a valid solution.
An algorithm for finding the shortest path between a source vertex and all other vertices in a weighted graph, it can also detect negative cycles.
A general algorithmic technique that incrementally builds candidates to the solutions and abandons some as soon as it can prove that the remaining candidates cannot possibly give a better solution than the current best one.
An algorithm for traversing or searching tree or graph data structures. It starts at the tree root (or some arbitrary node of a graph, sometimes referred to as a 'search key') and explores the neighbor nodes first, before moving to the next level neighbors.
An algorithm that uses a priority queue to explore the most promising next node first.
An algorithm for finding the shortest path between a source vertex and all other vertices in a weighted, non-negative graph.
An algorithm for traversing or searching tree or graph data structures. It starts at the tree root (or some arbitrary node of a graph, sometimes referred to as a 'search key') and explores as far as possible along each branch before backtracking.
An algorithm that breaks down a problem into smaller subproblems and solves each subproblem individually before combining the solutions.
A technique used to solve problems by breaking them down into smaller subproblems and storing the solutions to these subproblems in a table to avoid redundant computation.
An algorithm for finding the shortest paths between all pairs of vertices in a weighted, directed graph.
An algorithm for finding the shortest paths between all pairs of vertices in a sparse, weighted, directed graph.
An algorithm that makes the locally optimal choice at each step with the hope of finding a global optimum.
An algorithm that uses a set of rules or a 'heuristic' to make decisions and find solutions.
An algorithm that repeats a specific process until a certain condition is met.
An algorithm for finding the minimum spanning tree of a connected, undirected graph.
An algorithm for finding the minimum spanning tree of a connected, undirected graph.
An algorithm that calls itself to solve a problem by breaking it down into smaller subproblems.
A measure of an algorithm's efficiency in terms of the amount of time it takes to run as a function of the size of the input.
A measure of an algorithm's efficiency in terms of the amount of memory it uses.
An efficient, general-purpose, comparison-based sorting algorithm.
An efficient, general-purpose, comparison-based sorting algorithm.
An integer sorting algorithm that sorts data with integer keys by grouping keys by the individual digits which share the same significant position and value.
A tree-based data structure that is used to store an associative array where the keys are sequences (strings), providing a means of retrieval in O(k) time, where k is the length of the key.
A space-efficient probabilistic data structure, that is used to test whether an element is a member of a set.
A data structure that implements an associative array abstract data type, a structure that can map keys to values.
A type of self-balancing binary search tree in computer science.
A self-balancing binary search tree in computer science.
A self-balancing tree data structure that keeps data sorted and allows searches, sequential access, insertions, and deletions in logarithmic amortized time.
A data structure for priority queue operations, consisting of a collection of heap-ordered trees.
A space-partitioning data structure for organizing points in a k-dimensional space.
A self-adjusting binary search tree with the additional property that recently accessed elements are quick to access again.
An algorithm for solving linear programming problems, it is based on the idea of repeatedly selecting the most favorable vertex of the current polytope and moving to it.
An unsupervised learning algorithm that is used to classify a given set of n samples into k clusters, it aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest mean.
A non-parametric method used for classification and regression, it's a type of instance-based learning, or lazy learning where the function is only approximated locally and all computation is deferred until classification.
An algorithm for finding the eigenvalues and eigenvectors of a matrix, it is an important tool in linear algebra and its applications in physics, engineering and computer science.
A type of feed-forward artificial neural network in which the connectivity pattern between its neurons is inspired by the organization of the animal visual cortex.
A class of artificial neural networks that allows to process sequential data, it has the ability to process an input sequence and maintain an internal state capturing information about the past elements in the sequence.
A type of recurrent neural network that is able to capture long-term dependencies in sequential data.
A class of machine learning systems invented by Ian Goodfellow and his colleagues in 2014, it is designed to generate new, previously unseen examples from a given set of training data.
A probabilistic technique for approximating the global optimum of a given function, it is often used for mathematical optimization and in computer science for the travelling salesman problem and other combinatorial optimization problems.
A computational method that optimizes a problem by iteratively trying to improve a candidate solution with regard to a given measure of quality.
A probabilistic technique for solving computational problems which can be reduced to finding good paths through graphs.
A search heuristic that is inspired by the process of natural selection, it is used to generate useful solutions to optimization and search problems.
A method of optimization that is based on the biological principle of natural selection and evolution, it is used to find the best solution to a problem in a large search space.
A technique used in algorithm design for storing the results of expensive function calls and returning the cached result when the same inputs occur again.
An algorithm that uses a random number generator to make decisions or select options within the algorithm.
An iterative method to find maximum likelihood estimates of parameters in statistical models, where the model depends on unobserved latent variables.
An algorithm in linear programming for solving the linear programming problem, it solves the problem by moving from one vertex of the feasible set to an adjacent vertex that improves the value of the objective function.
A variant of quicksort algorithm that chooses a random pivot element from the array to be sorted, this helps in avoiding worst-case scenarios and improves the average time complexity.
An ensemble learning method for classification, regression and other tasks, that operate by constructing a multitude of decision trees at training time and outputting the class that is the mode of the classes (classification) or mean prediction (regression) of the individual trees.
An optimization algorithm used to minimize some function by iteratively moving in the direction of steepest or most rapid decrease of the function. It is commonly used in training machine learning models.
A variant of Gradient Descent algorithm, it uses random samples from the dataset in each iteration to update the parameters of the model, this helps to escape local optima and improve the convergence.
A method used to improve the performance of gradient descent, it adds a fraction of the update vector of the past time step to the current update vector.
A stochastic gradient optimization method, it combines the advantages of Root Mean Square Propagation (RMSProp) and Adaptive Gradient Algorithm (AdaGrad) and it is often used to optimize deep learning models.
A link analysis algorithm, it assigns a numerical weighting to each element of a hyperlinked set of documents, such as the World Wide Web, with the purpose of 'measuring' its relative importance within the set.
A graph search algorithm that finds the shortest path between an initial vertex and a goal vertex in a directed graph, it runs two simultaneous searches: one forward from the initial vertex and one backward from the goal vertex, stopping when the searches meet in the middle.
An optimization algorithm that is inspired by the intelligent foraging behaviour of honey bee colonies, it is used to solve optimization problems in a wide range of fields.