<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://wiki.mathnt.net/index.php?action=history&amp;feed=atom&amp;title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98</id>
	<title>메모이제이션 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mathnt.net/index.php?action=history&amp;feed=atom&amp;title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98"/>
	<link rel="alternate" type="text/html" href="https://wiki.mathnt.net/index.php?title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98&amp;action=history"/>
	<updated>2026-04-04T17:06:37Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.mathnt.net/index.php?title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98&amp;diff=51225&amp;oldid=prev</id>
		<title>2021년 2월 17일 (수) 08:04에 Pythagoras0님의 편집</title>
		<link rel="alternate" type="text/html" href="https://wiki.mathnt.net/index.php?title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98&amp;diff=51225&amp;oldid=prev"/>
		<updated>2021-02-17T08:04:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021년 2월 17일 (수) 08:04 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l82&quot; &gt;82번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;82번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 메타데이터 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==메타데이터==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===위키데이터===&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===위키데이터===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ID :  [https://www.wikidata.org/wiki/Q1376168 Q1376168]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ID :  [https://www.wikidata.org/wiki/Q1376168 Q1376168]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===Spacy 패턴 목록===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [{&amp;#039;LEMMA&amp;#039;: &amp;#039;memoization&amp;#039;}]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Pythagoras0</name></author>
	</entry>
	<entry>
		<id>https://wiki.mathnt.net/index.php?title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98&amp;diff=47022&amp;oldid=prev</id>
		<title>Pythagoras0: /* 메타데이터 */ 새 문단</title>
		<link rel="alternate" type="text/html" href="https://wiki.mathnt.net/index.php?title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98&amp;diff=47022&amp;oldid=prev"/>
		<updated>2020-12-26T12:15:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;메타데이터: &lt;/span&gt; 새 문단&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2020년 12월 26일 (토) 12:15 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l81&quot; &gt;81번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;81번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===소스===&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===소스===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== 메타데이터 ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===위키데이터===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* ID :  [https://www.wikidata.org/wiki/Q1376168 Q1376168]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Pythagoras0</name></author>
	</entry>
	<entry>
		<id>https://wiki.mathnt.net/index.php?title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98&amp;diff=46304&amp;oldid=prev</id>
		<title>Pythagoras0: /* 노트 */ 새 문단</title>
		<link rel="alternate" type="text/html" href="https://wiki.mathnt.net/index.php?title=%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98&amp;diff=46304&amp;oldid=prev"/>
		<updated>2020-12-21T11:09:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;노트: &lt;/span&gt; 새 문단&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 노트 ==&lt;br /&gt;
&lt;br /&gt;
===위키데이터===&lt;br /&gt;
* ID :  [https://www.wikidata.org/wiki/Q1376168 Q1376168]&lt;br /&gt;
===말뭉치===&lt;br /&gt;
# In comes memoization, a way for our function to remember (cache) the results.&amp;lt;ref name=&amp;quot;ref_00a38253&amp;quot;&amp;gt;[https://www.freecodecamp.org/news/understanding-memoize-in-javascript-51d07d19430e/ How to use Memoize to cache JavaScript function results and speed up your code]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Wikipedia entry on memoization says that it is an optimization technique to speed up programs by storing results of expensive function calls.&amp;lt;ref name=&amp;quot;ref_f119cb74&amp;quot;&amp;gt;[https://www.aleksandar.io/post/memoization/ Memoization in C# - Functional approach (Part 1)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# This article demonstrates Memoization in JavaScript.&amp;lt;ref name=&amp;quot;ref_143be54c&amp;quot;&amp;gt;[https://www.dotnetcurry.com/javascript/memoization-javascript-angular-reactjs Memoization in JavaScript, Angular and React]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# We begin with a barebone JavaScript implementation of Memoization.&amp;lt;ref name=&amp;quot;ref_143be54c&amp;quot; /&amp;gt;&lt;br /&gt;
# Memoization is a caching technique for functions.&amp;lt;ref name=&amp;quot;ref_143be54c&amp;quot; /&amp;gt;&lt;br /&gt;
# The following memoization wrapper is one simple way to implement memoization.&amp;lt;ref name=&amp;quot;ref_143be54c&amp;quot; /&amp;gt;&lt;br /&gt;
# The theory behind memoization is that if you have a function you need to call several times in one request, it would only be calculated the first time that function is called with those arguments.&amp;lt;ref name=&amp;quot;ref_26bbc43a&amp;quot;&amp;gt;[https://pythonhosted.org/django-memoize/ django-memoize — django-memoize 2.1.0 documentation]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Memoization lets us cache the values of slow functions.&amp;lt;ref name=&amp;quot;ref_c808aefc&amp;quot;&amp;gt;[https://www.hackingwithswift.com/plus/high-performance-apps/using-memoization-to-speed-up-slow-functions Using memoization to speed up slow functions – Hacking with Swift+]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Remember, memoization is the process of caching returned values from a function for particular in input.&amp;lt;ref name=&amp;quot;ref_c808aefc&amp;quot; /&amp;gt;&lt;br /&gt;
# And that’s it: our new memoization function is ready.&amp;lt;ref name=&amp;quot;ref_c808aefc&amp;quot; /&amp;gt;&lt;br /&gt;
# First, memoization is a time-space tradeoff: we save some time in exchange for chewing up a little extra memory to store all our cached data.&amp;lt;ref name=&amp;quot;ref_c808aefc&amp;quot; /&amp;gt;&lt;br /&gt;
# A clasic example of function which greatelly benefits from memoization is a recursively defined Fibonacci number function.&amp;lt;ref name=&amp;quot;ref_285bbe00&amp;quot;&amp;gt;[https://hackage.haskell.org/package/monad-memo monad-memo: Memoization monad transformer]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# And this is precisely what we have to do - use two memoization caches!&amp;lt;ref name=&amp;quot;ref_285bbe00&amp;quot; /&amp;gt;&lt;br /&gt;
# Normally you don&amp;#039;t have to modify your monadic function definition to run ArrayCache -based memoization: just use appropriate eval* or run* function.&amp;lt;ref name=&amp;quot;ref_285bbe00&amp;quot; /&amp;gt;&lt;br /&gt;
# : I was just playing around with some code, and came up with this simple memoization procedure.&amp;lt;ref name=&amp;quot;ref_9c99b5ee&amp;quot;&amp;gt;[https://wiki.tcl-lang.org/page/memoizing memoizing]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Memoization is the act of storing the result of a function call after we run it, in the function itself.&amp;lt;ref name=&amp;quot;ref_d9ca57fe&amp;quot;&amp;gt;[https://flaviocopes.com/javascript-memoization/ Memoization in JavaScript]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Memoization works if the result of calling a function with the same set of arguments results in the same output.&amp;lt;ref name=&amp;quot;ref_d9ca57fe&amp;quot; /&amp;gt;&lt;br /&gt;
# So, database queries, network requests, writing to files and other non-pure operations cannot be optimized with memoization.&amp;lt;ref name=&amp;quot;ref_d9ca57fe&amp;quot; /&amp;gt;&lt;br /&gt;
# Put simply, memoization is saving a method&amp;#039;s return value so it does not have to be recomputed each time.&amp;lt;ref name=&amp;quot;ref_116920a9&amp;quot;&amp;gt;[https://www.honeybadger.io/blog/ruby-rails-memoization/ Speeding up Rails with Memoization]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# When using memoization there are some questions we need to ask ourselves: How often is the value accessed?&amp;lt;ref name=&amp;quot;ref_116920a9&amp;quot; /&amp;gt;&lt;br /&gt;
# If so the memoization probably needs to take this into account.&amp;lt;ref name=&amp;quot;ref_116920a9&amp;quot; /&amp;gt;&lt;br /&gt;
# Most of the time memoization is done at the instance level, meaning we use an instance variable to hold the computed value.&amp;lt;ref name=&amp;quot;ref_116920a9&amp;quot; /&amp;gt;&lt;br /&gt;
# The Seven Bridges Platform enables memoization by caching results at the most basic level: that of individual tools.&amp;lt;ref name=&amp;quot;ref_ac30743d&amp;quot;&amp;gt;[https://www.sevenbridges.com/memoization/ How Memoization Enhances Efficiency for Large Scale Genomic Analysis Research Projects]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Memoization enables researchers to avoid duplicate computations across related workflows.&amp;lt;ref name=&amp;quot;ref_ac30743d&amp;quot; /&amp;gt;&lt;br /&gt;
# Memoization enables more efficient exploration by allowing researchers to run a workflow with one set of parameters and then rerun it repeatedly with changed values.&amp;lt;ref name=&amp;quot;ref_ac30743d&amp;quot; /&amp;gt;&lt;br /&gt;
# For more information on how to utilize memoization, please visit the memoization documentation.&amp;lt;ref name=&amp;quot;ref_ac30743d&amp;quot; /&amp;gt;&lt;br /&gt;
# Memoization is a strategy for preventing values to be computed multiple times.&amp;lt;ref name=&amp;quot;ref_a82aa852&amp;quot;&amp;gt;[http://jobjo.github.io/2018/12/02/memoization.html Notes on Computing]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# The problem here is that memoization only applies at the top level.&amp;lt;ref name=&amp;quot;ref_a82aa852&amp;quot; /&amp;gt;&lt;br /&gt;
# We need to somehow be able to embed the memoization into the recursive calls.&amp;lt;ref name=&amp;quot;ref_a82aa852&amp;quot; /&amp;gt;&lt;br /&gt;
# This optimization is called memoization.&amp;lt;ref name=&amp;quot;ref_7a7fd326&amp;quot;&amp;gt;[https://www.oreilly.com/library/view/javascript-the-good/9780596517748/ch04s15.html JavaScript: The Good Parts [Book]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# In computing, memoization is an optimization technique used primarily to speed up computer programs by having function calls avoid repeating the calculation of results for previously processed inputs.&amp;lt;ref name=&amp;quot;ref_6cf86f35&amp;quot;&amp;gt;[http://www.definitions.net/definition/memoization What does memoization mean?]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Although related to caching, memoization refers to a specific case of this optimization, distinguishing it from forms of caching such as buffering or page replacement.&amp;lt;ref name=&amp;quot;ref_6cf86f35&amp;quot; /&amp;gt;&lt;br /&gt;
# In the context of some logic programming languages, memoization is also known as tabling; see also lookup table.&amp;lt;ref name=&amp;quot;ref_6cf86f35&amp;quot; /&amp;gt;&lt;br /&gt;
# Memoization is a term introduced by Donald Michie in 1968, which comes from the latin word memorandum (to be remembered).&amp;lt;ref name=&amp;quot;ref_1e160b3e&amp;quot;&amp;gt;[https://towardsdatascience.com/memoization-in-python-57c0a738179a Memoization in Python]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Memoization is a method used in computer science to speed up calculations by storing (remembering) past calculations.&amp;lt;ref name=&amp;quot;ref_1e160b3e&amp;quot; /&amp;gt;&lt;br /&gt;
# Let’s now walk through the steps of implementing the memoization method.&amp;lt;ref name=&amp;quot;ref_1e160b3e&amp;quot; /&amp;gt;&lt;br /&gt;
# Next, we will define our memoization function.&amp;lt;ref name=&amp;quot;ref_1e160b3e&amp;quot; /&amp;gt;&lt;br /&gt;
# Abstract : Memoization is the technique of saving result of executions so that future executions can be omitted when the input set repeats.&amp;lt;ref name=&amp;quot;ref_d350d5aa&amp;quot;&amp;gt;[https://hal.inria.fr/hal-01178085 Intercepting Functions for Memoization: A Case Study Using Transcendental Functions]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# In this paper, we focus on software memoization for procedural languages like C and Fortran, at the granularity of a function.&amp;lt;ref name=&amp;quot;ref_d350d5aa&amp;quot; /&amp;gt;&lt;br /&gt;
# As far as users are concerned, enabling memoization is as simple as setting an environment variable.&amp;lt;ref name=&amp;quot;ref_d350d5aa&amp;quot; /&amp;gt;&lt;br /&gt;
# On standard benchmark applications that extensively call the transcendental functions we report memoization benefits of upto 50% on Intel Ivy bridge and upto 10% on ARM Cortex-A9.&amp;lt;ref name=&amp;quot;ref_d350d5aa&amp;quot; /&amp;gt;&lt;br /&gt;
# We study how the adoption of an evaluation mechanism with sharing and memoization impacts the class of functions which can be computed in polynomial time.&amp;lt;ref name=&amp;quot;ref_1b4cc98a&amp;quot;&amp;gt;[https://www.sciencedirect.com/science/article/pii/S0890540118300750 On sharing, memoization, and polynomial time ☆]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Memoization is a higher order function that caches another function.&amp;lt;ref name=&amp;quot;ref_79b98a5d&amp;quot;&amp;gt;[https://lispcast.com/what-is-memoization/ What is memoization?]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Implement some kind of memoization system yourself, whether you’re doing a higher-order function or, maybe, you’re an object-oriented language.&amp;lt;ref name=&amp;quot;ref_79b98a5d&amp;quot; /&amp;gt;&lt;br /&gt;
# However, in memoization , caching is always typed, which means f(3) and f(3.0) will be treated as different calls and cached separately.&amp;lt;ref name=&amp;quot;ref_4bc9265f&amp;quot;&amp;gt;[https://pypi.org/project/memoization/ memoization]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Unlike lru_cache , memoization is designed to be highly extensible, which make it easy for developers to add and integrate any caching algorithms (beyond FIFO, LRU and LFU) into this library.&amp;lt;ref name=&amp;quot;ref_4bc9265f&amp;quot; /&amp;gt;&lt;br /&gt;
# for functions with unhashable arguments, the default setting may not enable memoization to work properly.&amp;lt;ref name=&amp;quot;ref_4bc9265f&amp;quot; /&amp;gt;&lt;br /&gt;
# By default, memoization tries to combine all your function arguments and calculate its hash value using hash() .&amp;lt;ref name=&amp;quot;ref_4bc9265f&amp;quot; /&amp;gt;&lt;br /&gt;
# memoizedFcn = memoize( fh ) adds memoization semantics to the input function handle, and returns a MemoizedFunction object.&amp;lt;ref name=&amp;quot;ref_9da4fd53&amp;quot;&amp;gt;[https://www.mathworks.com/help/matlab/ref/memoize.html Add memoization semantics to function handle]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# The memoization of a function is associated with the input function and not with the MemoizedFunction object.&amp;lt;ref name=&amp;quot;ref_9da4fd53&amp;quot; /&amp;gt;&lt;br /&gt;
# With memoization, when a function is provided an input, it does the required computation and stores the result to cache before returning the value.&amp;lt;ref name=&amp;quot;ref_8375be91&amp;quot;&amp;gt;[https://scotch.io/tutorials/understanding-memoization-in-javascript Understanding Memoization In JavaScript]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# The concept of memoization in JavaScript is built majorly on two concepts.&amp;lt;ref name=&amp;quot;ref_8375be91&amp;quot; /&amp;gt;&lt;br /&gt;
# Now let’s see how memoization utilizes these concept using some more code samples.&amp;lt;ref name=&amp;quot;ref_8375be91&amp;quot; /&amp;gt;&lt;br /&gt;
# Now we’ve seen just how much memoization can impact the performance of our applications on a functional level.&amp;lt;ref name=&amp;quot;ref_8375be91&amp;quot; /&amp;gt;&lt;br /&gt;
# Memoization is best technique to save on memory or CPU cycles when we deal with repeated operations.&amp;lt;ref name=&amp;quot;ref_d50d701b&amp;quot;&amp;gt;[https://www.npmjs.com/package/memoize-fs memoize-fs]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Memoization is a way to lower a function&amp;#039;s time cost in exchange for space cost; that is, memoized functions become optimized for speed in exchange for a higher use of computer memory space.&amp;lt;ref name=&amp;quot;ref_213aee66&amp;quot;&amp;gt;[https://en.wikipedia.org/wiki/Memoization Memoization]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Memoization is heavily used in compilers for functional programming languages, which often use call by name evaluation strategy.&amp;lt;ref name=&amp;quot;ref_213aee66&amp;quot; /&amp;gt;&lt;br /&gt;
# The techniques employed by Peter Norvig have application not only in Common Lisp (the language in which his paper demonstrated automatic memoization), but also in various other programming languages.&amp;lt;ref name=&amp;quot;ref_213aee66&amp;quot; /&amp;gt;&lt;br /&gt;
# In those languages that allow closures, memoization can be effected implicitly via a functor factory that returns a wrapped memoized function object in a decorator pattern.&amp;lt;ref name=&amp;quot;ref_213aee66&amp;quot; /&amp;gt;&lt;br /&gt;
# As mentioned earlier, memoization reminds us dynamic programming.&amp;lt;ref name=&amp;quot;ref_fb5d8e52&amp;quot;&amp;gt;[https://medium.com/@chialunwu/wtf-is-memoization-a2979594fb2a WTF is Memoization]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Although DP typically uses bottom-up approach and saves the results of the sub-problems in an array table, while memoization uses top-down approach and saves the results in a hash table.&amp;lt;ref name=&amp;quot;ref_fb5d8e52&amp;quot; /&amp;gt;&lt;br /&gt;
# Memoization solves the problem “top-down” by maintaining a map of already solved sub-problems.&amp;lt;ref name=&amp;quot;ref_fb5d8e52&amp;quot; /&amp;gt;&lt;br /&gt;
# Memoization is a technique of caching function results “in” the function itself to make the function have memory, and the callers won’t need to know if the function is memoized or not.&amp;lt;ref name=&amp;quot;ref_fb5d8e52&amp;quot; /&amp;gt;&lt;br /&gt;
# There are several excellent articles that talk about the optimization technique called memoization.&amp;lt;ref name=&amp;quot;ref_96b4e992&amp;quot;&amp;gt;[https://codeburst.io/understanding-memoization-in-3-minutes-2e58daf33a19 Understanding JavaScript Memoization In 3 Minutes]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# What we’re going to do is give you a brief overview of what memoization is.&amp;lt;ref name=&amp;quot;ref_96b4e992&amp;quot; /&amp;gt;&lt;br /&gt;
# Let’s break down exactly what memoization is doing by looking at a very simple and impractical example.&amp;lt;ref name=&amp;quot;ref_96b4e992&amp;quot; /&amp;gt;&lt;br /&gt;
# Memoization becomes demystified when you boil it down to key-value pairs.&amp;lt;ref name=&amp;quot;ref_96b4e992&amp;quot; /&amp;gt;&lt;br /&gt;
# Since only one parameter is non-constant, this method is known as 1-D memoization.&amp;lt;ref name=&amp;quot;ref_87053341&amp;quot;&amp;gt;[https://www.geeksforgeeks.org/memoization-1d-2d-and-3d/ Memoization (1D, 2D and 3D)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# So this problem has Overlapping Substructure property and recomputation of same subproblems can be avoided by either using Memoization or Tabulation.&amp;lt;ref name=&amp;quot;ref_87053341&amp;quot; /&amp;gt;&lt;br /&gt;
# A common point of observation to use memoization in the recursive code will be the two non-constant arguments M and N in every function call.&amp;lt;ref name=&amp;quot;ref_87053341&amp;quot; /&amp;gt;&lt;br /&gt;
# The function has 4 arguments, but 2 arguments are constant which do not affect the Memoization.&amp;lt;ref name=&amp;quot;ref_87053341&amp;quot; /&amp;gt;&lt;br /&gt;
# One important use of hash tables is for memoization , in which a previously computed result is stored in the table and retrieved later.&amp;lt;ref name=&amp;quot;ref_ef50f10e&amp;quot;&amp;gt;[https://www.cs.cornell.edu/courses/cs3110/2012sp/lectures/lec22-memoization/lec22.html Lecture 22: Memoization]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# A good choice of progress measure, not only here but also for many uses of memoization, is the number of nonempty entries in the table (i.e. entries that contain Some integer value rather than None ).&amp;lt;ref name=&amp;quot;ref_ef50f10e&amp;quot; /&amp;gt;&lt;br /&gt;
# We can use memoization to turn this into a linear-time algorithm.&amp;lt;ref name=&amp;quot;ref_ef50f10e&amp;quot; /&amp;gt;&lt;br /&gt;
# Why was memoization so effective for solving this problem?&amp;lt;ref name=&amp;quot;ref_ef50f10e&amp;quot; /&amp;gt;&lt;br /&gt;
===소스===&lt;br /&gt;
 &amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pythagoras0</name></author>
	</entry>
</feed>