Logo
Unionpedia
Communication
Get it on Google Play
New! Download Unionpedia on your Android™ device!
Free
Faster access than browser!
 

Memoization

Index Memoization

In computing, memoization or memoisation is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again. [1]

94 relations: Algorithm, Ambiguity, Apache Groovy, Approximate computing, Artificial intelligence, Associative array, Backtracking, Big O notation, Bottom-up parsing, C++, Cache (computing), Camlp4, Cellular automaton, Closure (computer programming), Cognate, Combinatory logic, Common Lisp, Compile time, Compiler, Compiler-compiler, Computational complexity theory, Computer memory, Computer program, Computing, Context-free grammar, Cross-platform, CYK algorithm, Data buffer, Data structure, Director string, Donald Michie, Dynamic programming, Earley parser, Evaluation strategy, Factorial, First-class citizen, Flyweight pattern, Formal grammar, Formal language, Function object, Functional programming, Hashlife, Haskell (programming language), Higher-order function, Higher-Order Perl, Integer, Invariant (computer science), JavaScript, Latin, Lazy evaluation, ..., Left recursion, Logic programming, Lookup table, Lua (programming language), Machine-dependent software, Materialized view, Memorandum, Memorization, Mutual recursion, Natural language processing, Page replacement algorithm, Parse tree, Parser combinator, Parsing, Parsing expression grammar, Partial evaluation, Perl, Perl module, Peter Norvig, Polynomial, Program optimization, Programmer, Programming language, Pseudocode, Python (programming language), Racket (programming language), Recursion, Recursive descent parser, Referential transparency, Rewriting, Ruby (programming language), Run time (program lifecycle phase), Scheme (programming language), Software design pattern, Space–time tradeoff, Strength reduction, String (computer science), Subroutine, Syntactic predicate, This (computer programming), Thunk, Top-down parsing, Wolfram Mathematica, .NET Framework. Expand index (44 more) »

Algorithm

In mathematics and computer science, an algorithm is an unambiguous specification of how to solve a class of problems.

New!!: Memoization and Algorithm · See more »

Ambiguity

Ambiguity is a type of meaning in which several interpretations are plausible.

New!!: Memoization and Ambiguity · See more »

Apache Groovy

Apache Groovy is a Java-syntax-compatible object-oriented programming language for the Java platform.

New!!: Memoization and Apache Groovy · See more »

Approximate computing

Approximate computing is a computation technique which returns a possibly inaccurate result rather than a guaranteed accurate result, and can be used for applications where an approximate result is sufficient for its purpose.

New!!: Memoization and Approximate computing · See more »

Artificial intelligence

Artificial intelligence (AI, also machine intelligence, MI) is intelligence demonstrated by machines, in contrast to the natural intelligence (NI) displayed by humans and other animals.

New!!: Memoization and Artificial intelligence · See more »

Associative array

In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection.

New!!: Memoization and Associative array · See more »

Backtracking

Backtracking is a general algorithm for finding all (or some) solutions to some computational problems, notably constraint satisfaction problems, that incrementally builds candidates to the solutions, and abandons a candidate ("backtracks") as soon as it determines that the candidate cannot possibly be completed to a valid solution.

New!!: Memoization and Backtracking · See more »

Big O notation

Big O notation is a mathematical notation that describes the limiting behaviour of a function when the argument tends towards a particular value or infinity.

New!!: Memoization and Big O notation · See more »

Bottom-up parsing

In computer science, parsing reveals the grammatical structure of linear input text, as a first step in working out its meaning.

New!!: Memoization and Bottom-up parsing · See more »

C++

C++ ("see plus plus") is a general-purpose programming language.

New!!: Memoization and C++ · See more »

Cache (computing)

In computing, a cache, is a hardware or software component that stores data so future requests for that data can be served faster; the data stored in a cache might be the result of an earlier computation, or the duplicate of data stored elsewhere.

New!!: Memoization and Cache (computing) · See more »

Camlp4

Camlp4 is a software system for writing extensible parsers for programming languages.

New!!: Memoization and Camlp4 · See more »

Cellular automaton

A cellular automaton (pl. cellular automata, abbrev. CA) is a discrete model studied in computer science, mathematics, physics, complexity science, theoretical biology and microstructure modeling.

New!!: Memoization and Cellular automaton · See more »

Closure (computer programming)

In programming languages, a closure (also lexical closure or function closure) is a technique for implementing lexically scoped name binding in a language with first-class functions.

New!!: Memoization and Closure (computer programming) · See more »

Cognate

In linguistics, cognates are words that have a common etymological origin.

New!!: Memoization and Cognate · See more »

Combinatory logic

Combinatory logic is a notation to eliminate the need for quantified variables in mathematical logic.

New!!: Memoization and Combinatory logic · See more »

Common Lisp

Common Lisp (CL) is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 (R2004) (formerly X3.226-1994 (R1999)).

New!!: Memoization and Common Lisp · See more »

Compile time

In computer science, compile time refers to either the operations performed by a compiler (the "compile-time operations"), programming language requirements that must be met by source code for it to be successfully compiled (the "compile-time requirements"), or properties of the program that can be reasoned about during compilation.

New!!: Memoization and Compile time · See more »

Compiler

A compiler is computer software that transforms computer code written in one programming language (the source language) into another programming language (the target language).

New!!: Memoization and Compiler · See more »

Compiler-compiler

In computer science, a compiler-compiler or compiler generator is a programming tool that creates a parser, interpreter, or compiler from some form of formal description of a language and machine.

New!!: Memoization and Compiler-compiler · See more »

Computational complexity theory

Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other.

New!!: Memoization and Computational complexity theory · See more »

Computer memory

In computing, memory refers to the computer hardware integrated circuits that store information for immediate use in a computer; it is synonymous with the term "primary storage".

New!!: Memoization and Computer memory · See more »

Computer program

A computer program is a collection of instructions for performing a specific task that is designed to solve a specific class of problems.

New!!: Memoization and Computer program · See more »

Computing

Computing is any goal-oriented activity requiring, benefiting from, or creating computers.

New!!: Memoization and Computing · See more »

Context-free grammar

In formal language theory, a context-free grammar (CFG) is a certain type of formal grammar: a set of production rules that describe all possible strings in a given formal language.

New!!: Memoization and Context-free grammar · See more »

Cross-platform

In computing, cross-platform software (also multi-platform software or platform-independent software) is computer software that is implemented on multiple computing platforms.

New!!: Memoization and Cross-platform · See more »

CYK algorithm

In computer science, the Cocke–Younger–Kasami algorithm (alternatively called CYK, or CKY) is a parsing algorithm for context-free grammars, named after its inventors, John Cocke, Daniel Younger and Tadao Kasami.

New!!: Memoization and CYK algorithm · See more »

Data buffer

In computer science, a data buffer (or just buffer) is a region of a physical memory storage used to temporarily store data while it is being moved from one place to another.

New!!: Memoization and Data buffer · See more »

Data structure

In computer science, a data structure is a data organization and storage format that enables efficient access and modification.

New!!: Memoization and Data structure · See more »

Director string

In mathematics, in the area of lambda calculus and computation, directors or director strings are a mechanism for keeping track of the free variables in a term.

New!!: Memoization and Director string · See more »

Donald Michie

Donald Michie (11 November 1923 – 7 July 2007) was a British researcher in artificial intelligence.

New!!: Memoization and Donald Michie · See more »

Dynamic programming

Dynamic programming is both a mathematical optimization method and a computer programming method.

New!!: Memoization and Dynamic programming · See more »

Earley parser

In computer science, the Earley parser is an algorithm for parsing strings that belong to a given context-free language, though (depending on the variant) it may suffer problems with certain nullable grammars.

New!!: Memoization and Earley parser · See more »

Evaluation strategy

Evaluation strategies are used by programming languages to determine when to evaluate the argument(s) of a function call (for function, also read: operation, method, or relation) and what kind of value to pass to the function.

New!!: Memoization and Evaluation strategy · See more »

Factorial

In mathematics, the factorial of a non-negative integer n, denoted by n!, is the product of all positive integers less than or equal to n. For example, The value of 0! is 1, according to the convention for an empty product.

New!!: Memoization and Factorial · See more »

First-class citizen

In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities.

New!!: Memoization and First-class citizen · See more »

Flyweight pattern

In computer programming, flyweight is a software design pattern.

New!!: Memoization and Flyweight pattern · See more »

Formal grammar

In formal language theory, a grammar (when the context is not given, often called a formal grammar for clarity) is a set of production rules for strings in a formal language.

New!!: Memoization and Formal grammar · See more »

Formal language

In mathematics, computer science, and linguistics, a formal language is a set of strings of symbols together with a set of rules that are specific to it.

New!!: Memoization and Formal language · See more »

Function object

In computer programming, a function object is a construct allowing an object to be invoked or called as if it were an ordinary function, usually with the same syntax (a function parameter that can also be a function).

New!!: Memoization and Function object · See more »

Functional programming

In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.

New!!: Memoization and Functional programming · See more »

Hashlife

Hashlife is a memoized algorithm for computing the long-term fate of a given starting configuration in Conway's Game of Life and related cellular automata, much more quickly than would be possible using alternative algorithms that simulate each time step of each cell of the automaton.

New!!: Memoization and Hashlife · See more »

Haskell (programming language)

Haskell is a standardized, general-purpose compiled purely functional programming language, with non-strict semantics and strong static typing.

New!!: Memoization and Haskell (programming language) · See more »

Higher-order function

In mathematics and computer science, a higher-order function (also functional, functional form or functor) is a function that does at least one of the following.

New!!: Memoization and Higher-order function · See more »

Higher-Order Perl

Higher-Order Perl: Transforming Programs with Programs, is a book about the Perl programming language written by Mark Jason Dominus with the goal to teach Perl programmers with a strong C and Unix background how to use techniques with roots in functional programming languages like Lisp that are available in Perl as well.

New!!: Memoization and Higher-Order Perl · See more »

Integer

An integer (from the Latin ''integer'' meaning "whole")Integer 's first literal meaning in Latin is "untouched", from in ("not") plus tangere ("to touch").

New!!: Memoization and Integer · See more »

Invariant (computer science)

In computer science, an invariant is a condition that can be relied upon to be true during the execution of a program, or during some portion of it.

New!!: Memoization and Invariant (computer science) · See more »

JavaScript

JavaScript, often abbreviated as JS, is a high-level, interpreted programming language.

New!!: Memoization and JavaScript · See more »

Latin

Latin (Latin: lingua latīna) is a classical language belonging to the Italic branch of the Indo-European languages.

New!!: Memoization and Latin · See more »

Lazy evaluation

In programming language theory, lazy evaluation, or call-by-need is an evaluation strategy which delays the evaluation of an expression until its value is needed (non-strict evaluation) and which also avoids repeated evaluations (sharing).

New!!: Memoization and Lazy evaluation · See more »

Left recursion

In the formal language theory of computer science, left recursion is a special case of recursion where a string is recognized as part of a language by the fact that it decomposes into a string from that same language (on the left) and a suffix (on the right).

New!!: Memoization and Left recursion · See more »

Logic programming

Logic programming is a type of programming paradigm which is largely based on formal logic.

New!!: Memoization and Logic programming · See more »

Lookup table

In computer science, a lookup table is an array that replaces runtime computation with a simpler array indexing operation.

New!!: Memoization and Lookup table · See more »

Lua (programming language)

Lua (from meaning moon) is a lightweight, multi-paradigm programming language designed primarily for embedded use in applications.

New!!: Memoization and Lua (programming language) · See more »

Machine-dependent software

Machine-dependent software is application programming that runs only on a specific kind of PC.

New!!: Memoization and Machine-dependent software · See more »

Materialized view

In computing, a materialized view is a database object that contains the results of a query.

New!!: Memoization and Materialized view · See more »

Memorandum

A memorandum (abbrev.: memo; from Latin memorandum est, "It must be remembered (that)...") is a note, document or other communication that helps the memory by recording events or observations on a topic such as may be used in a business office.

New!!: Memoization and Memorandum · See more »

Memorization

Memorization is the process of committing something to memory.

New!!: Memoization and Memorization · See more »

Mutual recursion

In mathematics and computer science, mutual recursion is a form of recursion where two mathematical or computational objects, such as functions or data types, are defined in terms of each other.

New!!: Memoization and Mutual recursion · See more »

Natural language processing

Natural language processing (NLP) is an area of computer science and artificial intelligence concerned with the interactions between computers and human (natural) languages, in particular how to program computers to process and analyze large amounts of natural language data.

New!!: Memoization and Natural language processing · See more »

Page replacement algorithm

In a computer operating system that uses paging for virtual memory management, page replacement algorithms decide which memory pages to page out, sometimes called swap out, or write to disk, when a page of memory needs to be allocated.

New!!: Memoization and Page replacement algorithm · See more »

Parse tree

A parse tree or parsing tree or derivation tree or concrete syntax tree is an ordered, rooted tree that represents the syntactic structure of a string according to some context-free grammar.

New!!: Memoization and Parse tree · See more »

Parser combinator

In computer programming, a parser combinator is a higher-order function that accepts several parsers as input and returns a new parser as its output.

New!!: Memoization and Parser combinator · See more »

Parsing

Parsing, syntax analysis or syntactic analysis is the process of analysing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar.

New!!: Memoization and Parsing · See more »

Parsing expression grammar

In computer science, a parsing expression grammar, or PEG, is a type of analytic formal grammar, i.e. it describes a formal language in terms of a set of rules for recognizing strings in the language.

New!!: Memoization and Parsing expression grammar · See more »

Partial evaluation

In computing, partial evaluation is a technique for several different types of program optimization by specialization.

New!!: Memoization and Partial evaluation · See more »

Perl

Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages, Perl 5 and Perl 6.

New!!: Memoization and Perl · See more »

Perl module

A Perl module is a discrete component of software for the Perl programming language.

New!!: Memoization and Perl module · See more »

Peter Norvig

Peter Norvig (born December 14, 1956) is an American computer scientist.

New!!: Memoization and Peter Norvig · See more »

Polynomial

In mathematics, a polynomial is an expression consisting of variables (also called indeterminates) and coefficients, that involves only the operations of addition, subtraction, multiplication, and non-negative integer exponents of variables.

New!!: Memoization and Polynomial · See more »

Program optimization

In computer science, program optimization or software optimization is the process of modifying a software system to make some aspect of it work more efficiently or use fewer resources.

New!!: Memoization and Program optimization · See more »

Programmer

A programmer, developer, dev, coder, or software engineer is a person who creates computer software.

New!!: Memoization and Programmer · See more »

Programming language

A programming language is a formal language that specifies a set of instructions that can be used to produce various kinds of output.

New!!: Memoization and Programming language · See more »

Pseudocode

Pseudocode is an informal high-level description of the operating principle of a computer program or other algorithm.

New!!: Memoization and Pseudocode · See more »

Python (programming language)

Python is an interpreted high-level programming language for general-purpose programming.

New!!: Memoization and Python (programming language) · See more »

Racket (programming language)

Racket (formerly PLT Scheme) is a general-purpose, multi-paradigm programming language in the Lisp-Scheme family.

New!!: Memoization and Racket (programming language) · See more »

Recursion

Recursion occurs when a thing is defined in terms of itself or of its type.

New!!: Memoization and Recursion · See more »

Recursive descent parser

In computer science, a recursive descent parser is a kind of top-down parser built from a set of mutually recursive procedures (or a non-recursive equivalent) where each such procedure usually implements one of the productions of the grammar.

New!!: Memoization and Recursive descent parser · See more »

Referential transparency

Referential transparency and referential opacity are properties of parts of computer programs.

New!!: Memoization and Referential transparency · See more »

Rewriting

In mathematics, computer science, and logic, rewriting covers a wide range of (potentially non-deterministic) methods of replacing subterms of a formula with other terms.

New!!: Memoization and Rewriting · See more »

Ruby (programming language)

Ruby is a dynamic, interpreted, reflective, object-oriented, general-purpose programming language.

New!!: Memoization and Ruby (programming language) · See more »

Run time (program lifecycle phase)

In computer science, run time, runtime or execution time is the time during which a program is running (executing), in contrast to other program lifecycle phases such as compile time, link time and load time.

New!!: Memoization and Run time (program lifecycle phase) · See more »

Scheme (programming language)

Scheme is a programming language that supports multiple paradigms, including functional programming and imperative programming, and is one of the two main dialects of Lisp.

New!!: Memoization and Scheme (programming language) · See more »

Software design pattern

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design.

New!!: Memoization and Software design pattern · See more »

Space–time tradeoff

A space–time or time–memory trade-off in computer science is a case where an algorithm or program trades increased space usage with decreased time.

New!!: Memoization and Space–time tradeoff · See more »

Strength reduction

In compiler construction, strength reduction is a compiler optimization where expensive operations are replaced with equivalent but less expensive operations.

New!!: Memoization and Strength reduction · See more »

String (computer science)

In computer programming, a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable.

New!!: Memoization and String (computer science) · See more »

Subroutine

In computer programming, a subroutine is a sequence of program instructions that performs a specific task, packaged as a unit.

New!!: Memoization and Subroutine · See more »

Syntactic predicate

A syntactic predicate specifies the syntactic validity of applying a production in a formal grammar and is analogous to a semantic predicate that specifies the semantic validity of applying a production.

New!!: Memoization and Syntactic predicate · See more »

This (computer programming)

this, self, and Me are keywords used in some computer programming languages to refer to the object, class, or other entity of which the currently running code is a part.

New!!: Memoization and This (computer programming) · See more »

Thunk

In computer programming, a thunk is a subroutine used to inject an additional calculation into another subroutine.

New!!: Memoization and Thunk · See more »

Top-down parsing

In computer science, top-down parsing is a parsing strategy where one first looks at the highest level of the parse tree and works down the parse tree by using the rewriting rules of a formal grammar.

New!!: Memoization and Top-down parsing · See more »

Wolfram Mathematica

Wolfram Mathematica (usually termed Mathematica) is a modern technical computing system spanning most areas of technical computing — including neural networks, machine learning, image processing, geometry, data science, visualizations, and others.

New!!: Memoization and Wolfram Mathematica · See more »

.NET Framework

.NET Framework (pronounced dot net) is a software framework developed by Microsoft that runs primarily on Microsoft Windows.

New!!: Memoization and .NET Framework · See more »

Redirects here:

Automatic memoization, Memo function, Memo functions, Memoisation, Memoise, Memoised function, Memoize, Memoized function, Memoizing, Tabling.

References

[1] https://en.wikipedia.org/wiki/Memoization

OutgoingIncoming
Hey! We are on Facebook now! »