<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tcs.nju.edu.cn/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=76.7.227.224</id>
	<title>TCS Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://tcs.nju.edu.cn/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=76.7.227.224"/>
	<link rel="alternate" type="text/html" href="https://tcs.nju.edu.cn/wiki/index.php?title=Special:Contributions/76.7.227.224"/>
	<updated>2026-05-26T11:16:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://tcs.nju.edu.cn/wiki/index.php?title=Space-time_tradeoff&amp;diff=7662</id>
		<title>Space-time tradeoff</title>
		<link rel="alternate" type="text/html" href="https://tcs.nju.edu.cn/wiki/index.php?title=Space-time_tradeoff&amp;diff=7662"/>
		<updated>2013-10-25T01:39:27Z</updated>

		<summary type="html">&lt;p&gt;76.7.227.224: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{unsimple|date=July 2012}}&lt;br /&gt;
&lt;br /&gt;
In [[computer science]], a &#039;&#039;&#039;space-time&#039;&#039;&#039; or &#039;&#039;&#039;time-memory tradeoff&#039;&#039;&#039; is a way of solving a problem or calculation in less time by using more storage space (or memory), or by solving a problem in very little space by spending a long time. Most computers have a large amount of space, but not infinite space. Also, most people are willing to wait a little while for a big calculation, but not forever. So if your problem is taking a long time but not much memory, a space-time tradeoff would let you use more memory and solve the problem more quickly. Or, if it could be solved very quickly but requires more memory than you have, you can try to spend more time solving the problem in the limited memory.&lt;br /&gt;
&lt;br /&gt;
The most common condition is an [[algorithm]] using a [[lookup table]]. This means that the answers for some question for every possible value can be written down. One way of solving this problem is to write down the entire lookup table, which will let you find answers very quickly, but will use a lot of space. Another way is to calculate the answers without writing down anything, which uses very little space, but might take a long time.&lt;br /&gt;
&lt;br /&gt;
A space-time tradeoff can be used with the problem of [[Data storage device|data storage]]. If data is stored uncompressed, it takes more space but less time than if the data were stored compressed (since compressing the data decreases the amount of space it takes, but it takes time to run the [[Data compression|compression]] [[algorithm]]). &lt;br /&gt;
&lt;br /&gt;
Larger code size can be used to increase program speed when using [[loop unwinding]]. This [[technique]] makes the [[Computer program|program code]] longer for each iteration of a loop, but saves the computation time needed for jumping back to the beginning of the loop at the end of each iteration. &lt;br /&gt;
&lt;br /&gt;
In the field of [[cryptography]], using space-time tradeoff, the attacker is decreasing the [[Exponential function|exponential]] time required for a [[brute force attack]]. [[Rainbow table]]s use partially precomputed values in the hash space of a [[cryptographic hash function]] to [[Cryptanalysis|crack]] [[password]]s in minutes instead of weeks. Decreasing the size of the rainbow table increases the time required to [[Iteration|iterate]] over the hash space. The [[meet-in-the-middle attack]] attack uses a space-time tradeoff to find the [[Key (cryptography)|cryptographic key]] in only &amp;lt;math&amp;gt;2^{n+1}&amp;lt;/math&amp;gt; encryptions (and &amp;lt;math&amp;gt;O(2^n)&amp;lt;/math&amp;gt; space) compared to the expected &amp;lt;math&amp;gt;2^{2n}&amp;lt;/math&amp;gt; encryptions (but only &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt; space) of the normal attack. &lt;br /&gt;
&lt;br /&gt;
[[Dynamic programming]] is another example where the time of solving problems can be decreased by using more memory.&lt;br /&gt;
&lt;br /&gt;
==Other websites==&lt;br /&gt;
* [http://lasecwww.epfl.ch/pub/lasec/doc/Oech03.pdf Philippe Oechslin: Making a Faster Cryptanalytic Time-Memory Trade-Off.]&lt;br /&gt;
* [http://www.cs.sjsu.edu/faculty/stamp/RUA/TMTO.pdf Once Upon a Time-Memory Tradeoff.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tech-stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Computer science]]&lt;/div&gt;</summary>
		<author><name>76.7.227.224</name></author>
	</entry>
	<entry>
		<id>https://tcs.nju.edu.cn/wiki/index.php?title=Prolog&amp;diff=7857</id>
		<title>Prolog</title>
		<link rel="alternate" type="text/html" href="https://tcs.nju.edu.cn/wiki/index.php?title=Prolog&amp;diff=7857"/>
		<updated>2013-10-25T01:18:23Z</updated>

		<summary type="html">&lt;p&gt;76.7.227.224: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Prolog&#039;&#039;&#039; is a [[programming language]] that uses [[first order logic]].It is the most widespread [[logic programming]] language. It is declarative. [[Alain Cormerauer]], a [[France|French]] [[computer scientist]] developed Prolog in the early 1970s. Prolog is rather different from other programming languages. It uses facts and rules. Given the facts, the rules can be used to derive new facts. &lt;br /&gt;
&lt;br /&gt;
Note that Prolog  uses a [[paradigm]] called [[Negation as failure]], which means that &amp;lt;math&amp;gt;\mathrm{not}~p&amp;lt;/math&amp;gt; is assumed if &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; cannot be derived. This is different from true [[logical not|logical negation]]. While negation is failure has its benefits, it often confuses people starting to learn Prolog, as they expect true logical negation.&lt;br /&gt;
&lt;br /&gt;
Prolog also uses [[Horn clause]]s. It is a [[Turing completeness|turing-complete]] programming language. &lt;br /&gt;
&lt;br /&gt;
{{tech-stub}}&lt;br /&gt;
[[Category:Programming languages]]&lt;/div&gt;</summary>
		<author><name>76.7.227.224</name></author>
	</entry>
</feed>