<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA</id>
	<title>Самоорганизующийся список - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;action=history"/>
	<updated>2026-05-02T23:44:00Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=4588&amp;oldid=prev</id>
		<title>Patarakin: /* Метод транспонирования */</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=4588&amp;oldid=prev"/>
		<updated>2022-10-19T08:38:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Метод транспонирования&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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;ru&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;Версия от 11:38, 19 октября 2022&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-l75&quot;&gt;Строка 75:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 75:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; i is not the head of list:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; i is not the head of list:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;              swap item i with item (i - 1)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;              swap item i with item (i - 1)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&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; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&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;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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=&quot;diff-marker&quot;&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;!-- diff cache key digida:diff:1.41:old-4587:rev-4588:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=4587&amp;oldid=prev</id>
		<title>Patarakin в 08:37, 19 октября 2022</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=4587&amp;oldid=prev"/>
		<updated>2022-10-19T08:37:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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;ru&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;Версия от 11:37, 19 октября 2022&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-l59&quot;&gt;Строка 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;=== Метод перехода на передний план (MTF) ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;=== Метод перехода на передний план (MTF) ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&quot;center&quot;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&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=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:MTF_Algorithm.png|ссылка=https://en.wikipedia.org/wiki/File:MTF_Algorithm.png|330x330пкс|Move To Front Algorithm]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;small&amp;gt;Если выбран 5-й узел, он перемещается на передний план.&amp;lt;/small&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;  At the t-th item selection:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;  At the t-th item selection:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; item i is selected:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; item i is selected:&lt;/div&gt;&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-l69&quot;&gt;Строка 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 66:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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=&quot;diff-marker&quot;&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=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;В этом методе подсчитывается количество поисков каждого узла, т. е. каждый узел хранит отдельную переменную счетчика, которая увеличивается при каждом вызове. Затем узлы переупорядочиваются по убыванию количества. Таким образом, узлы с наибольшим количеством, т. е. наиболее часто используемые, остаются во главе списка. Основное преимущество этого метода состоит в том, что он, как правило, более реалистично отображает реальный шаблон доступа. Однако существует дополнительное требование к памяти, а именно поддержание переменной счетчика для каждого узла в списке. Кроме того, этот метод не может быстро адаптироваться к быстрым изменениям в схемах доступа. Например: если счетчик головного элемента говорит, что приоритет A равен 100, а приоритет узла B после него равен 40, то даже если B становится новым наиболее часто используемым элементом, к нему должны обратиться как минимум 100-40 = 60 раз, прежде чем он сможет стать головным элементом и, таким образом, сделать упорядочение списка оптимальным.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&quot;center&quot;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&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;В этом методе подсчитывается количество поисков каждого узла, т. е. каждый узел хранит отдельную переменную счетчика, которая увеличивается при каждом вызове. Затем узлы переупорядочиваются по убыванию количества. Таким образом, узлы с наибольшим количеством, т. е. наиболее часто используемые, остаются во главе списка. Основное преимущество этого метода состоит в том, что он, как правило, более реалистично отображает реальный шаблон доступа. Однако существует дополнительное требование к памяти, а именно поддержание переменной счетчика для каждого узла в списке. Кроме того, этот метод не может быстро адаптироваться к быстрым изменениям в схемах доступа. Например: если счетчик головного элемента говорит, что приоритет A равен 100, а приоритет узла B после него равен 40, то даже если B становится новым наиболее часто используемым элементом, к нему должны обратиться как минимум 100-40 = 60 раз, прежде чем он сможет стать головным элементом и, таким образом, сделать упорядочение списка оптимальным.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:CountAlgorithm.png|ссылка=https://en.wikipedia.org/wiki/File:CountAlgorithm.png|330x330пкс|Count Algorithm]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;small&amp;gt;Если 5-й узел в списке ищется дважды, он будет заменен на 4-й.&amp;lt;/small&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &#039;&#039;&#039;init:&#039;&#039;&#039; count(i) = 0 for each item i&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; At t-th item selection:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     &#039;&#039;&#039;if&#039;&#039;&#039; item i is searched:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         count(i) = count(i) + 1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         rearrange items based on count&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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=&quot;diff-marker&quot;&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=&quot;diff-marker&quot;&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;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Transpose_Algorithm.png|ссылка=https://en.wikipedia.org/wiki/File:Transpose_Algorithm.png|330x330пкс|Transpose Algorithm]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;small&amp;gt;Если выбран 5-й узел в списке, он будет заменен на 4-й.&amp;lt;/small&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;  At the t-th item selection:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;  At the t-th item selection:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; item i is selected:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; item i is selected:&lt;/div&gt;&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-l97&quot;&gt;Строка 97:&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=&quot;diff-marker&quot;&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;Переводчики языков, такие как компиляторы и интерпретаторы, используют самоорганизующиеся списки для поддержки [[Таблица символов|таблиц символов]] во время компиляции или интерпретации исходного кода программы. В настоящее время ведутся исследования по включению самоорганизующейся структуры данных списка во встроенные системы для снижения активности переключения шины, которая приводит к рассеянию мощности в этих схемах. Эти списки также используются в [[Искусственный интеллект|искусственном интеллекте]] и [[Нейронные сети|нейронных сетях]], а также в самонастраивающихся программах. Алгоритмы, используемые в самоорганизующихся списках, также используются в качестве [[Алгоритмы кэширования|алгоритмов кэширования]], как и в случае алгоритма LFU.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;Переводчики языков, такие как компиляторы и интерпретаторы, используют самоорганизующиеся списки для поддержки [[Таблица символов|таблиц символов]] во время компиляции или интерпретации исходного кода программы. В настоящее время ведутся исследования по включению самоорганизующейся структуры данных списка во встроенные системы для снижения активности переключения шины, которая приводит к рассеянию мощности в этих схемах. Эти списки также используются в [[Искусственный интеллект|искусственном интеллекте]] и [[Нейронные сети|нейронных сетях]], а также в самонастраивающихся программах. Алгоритмы, используемые в самоорганизующихся списках, также используются в качестве [[Алгоритмы кэширования|алгоритмов кэширования]], как и в случае алгоритма LFU.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Примечания ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;references group=&quot;&quot; responsive=&quot;1&quot;&amp;gt;&amp;lt;/references&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;references group=&quot;&quot; responsive=&quot;1&quot;&amp;gt;&amp;lt;/references&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Ссылки ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* {{Citation|title=Self Organization|url=http://courses.cs.vt.edu/~cs2604/spring04/Notes/C16.SelfOrganizingLists.pdf|year=2004}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* NIST [https://xlinux.nist.gov/dads/HTML/selfOrganizingList.html DADS entry]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* A Drozdek, Data Structures and Algorithms in Java Third edition&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* {{Citation|last=Amer|first=Abdelrehman|author2=B. John Oommen|title=Lists on Lists: A Framework for Self-organizing Lists in Environments with Locality of Reference|volume=4007|year=2006|doi=10.1007/11764298|isbn=978-3-540-34597-8|series=Lecture Notes in Computer Science}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{изолированная статья}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&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;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&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=&quot;diff-marker&quot;&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;/table&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=4573&amp;oldid=prev</id>
		<title>Patarakin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=4573&amp;oldid=prev"/>
		<updated>2022-10-19T07:30:54Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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;ru&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;Версия от 10:30, 19 октября 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key digida:diff:1.41:old-4572:rev-4573 --&gt;
&lt;/table&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=4572&amp;oldid=prev</id>
		<title>ru_wikipedia&gt;Timur Sagdenov: Добавлена Категория:Структуры данных; removed {{uncategorized}} с помощью HotCat</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=4572&amp;oldid=prev"/>
		<updated>2021-03-01T09:08:35Z</updated>

		<summary type="html">&lt;p&gt;Добавлена &lt;a href=&quot;/index.php/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&quot; title=&quot;Категория:Структуры данных&quot;&gt;Категория:Структуры данных&lt;/a&gt;; removed {{uncategorized}} с помощью &lt;a href=&quot;/index.php?title=%D0%92%D0%9F:HC&amp;amp;action=formedit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ВП:HC (страница не существует)&quot;&gt;HotCat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Самоорганизующийся список&amp;#039;&amp;#039;&amp;#039; это [[Список (информатика)|список,]] который упорядочивает элементы, основанные на некоторой самоорганизующейся эвристики для улучшения среднего времени доступа . Целью самоорганизующегося списка является повышение эффективности линейного поиска за счет перемещения наиболее часто используемых элементов в начало списка. Самоорганизующийся список в лучшем случае обеспечивает почти постоянное время доступа к элементам. В самоорганизующемся списке используется алгоритм реорганизации для адаптации к различным распределениям запросов во время выполнения.&lt;br /&gt;
&lt;br /&gt;
== История ==&lt;br /&gt;
Концепция самоорганизующихся списков уходит корнями в идею организации записей в файлах, хранящихся на дисках или магнитных лентах. Одно из часто цитируемых обсуждений самоорганизующихся файлов и списков принадлежит Кнуту.  Джон МакКейб провел первый анализ алгоритмической сложности стратегии Move-to-Front (MTF), когда элемент перемещается в начало списка после доступа к нему.  Он проанализировал среднее время, необходимое для сортировки случайно упорядоченного списка в оптимальном порядке. Оптимальный порядок списка - это тот, при котором элементы упорядочены в списке по вероятности, с которой они будут необходимы, с наиболее доступным элементом первым. Оптимальный порядок может быть неизвестен заранее и может измениться со временем.&lt;br /&gt;
&lt;br /&gt;
МакКейб представил стратегию перестановки, при которой элемент, к которому осуществляется доступ, обменивается с элементом перед ним в списке. Он сделал предположение, что в среднем случае транспонирование работает не хуже, чем MTF в приближении к оптимальному упорядочиванию записей в пределе. Позднее эта гипотеза была доказана Ривестом. МакКейб также отметил, что с помощью эвристики транспонирования или MTF можно было бы приблизиться к оптимальному упорядочению записей, даже если эвристика применялась бы только каждый N-й доступ. Были внесены дальнейшие улучшения и предложены алгоритмы такими исследователями, как Ривест, Тененбаум и Немес, Кнут, Бентли и МакГеоч (например, анализ наихудшего случая для эвристики самоорганизующегося последовательного поиска).&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Самая простая реализация самоорганизующегося списка - это [[Связный список|связанный список]], который, будучи эффективным при случайной вставке узлов и распределении памяти, страдает от неэффективного доступа к случайным узлам. Самоорганизующийся список снижает неэффективность за счет динамического переупорядочивания узлов в списке в зависимости от частоты доступа.&lt;br /&gt;
&lt;br /&gt;
=== Неэффективность обхода связанного списка ===&lt;br /&gt;
Если в списке нужно найти конкретный узел, каждый узел в списке необходимо последовательно сравнивать, пока не будет достигнут желаемый узел. В связанном списке получение n-го элемента является операцией O(n). Это очень неэффективно по сравнению, например, с массивом, где доступ к n-му элементу осуществляется за O(1).&lt;br /&gt;
&lt;br /&gt;
=== Эффективность самоорганизующихся списков ===&lt;br /&gt;
Самоорганизующийся список переупорядочивает узлы, оставляя наиболее часто используемые во главе списка. Как правило, в конкретном запросе шансы получить доступ к узлу, к которому ранее обращались много раз, выше, чем шансы получить доступ к узлу, к которому исторически не обращались так часто. В результате размещение часто используемых узлов во главе списка приводит к сокращению количества сравнений, необходимых в среднем случае для достижения желаемого узла. Это приводит к повышению эффективности и в целом сокращению времени выполнения запросов.&lt;br /&gt;
&lt;br /&gt;
== Реализация самоорганизующегося списка ==&lt;br /&gt;
Реализация и методы самоорганизующегося списка идентичны таковым для стандартного связного списка . Связанный список и самоорганизующийся список различаются только с точки зрения организации узлов; интерфейс остался прежним.&lt;br /&gt;
&lt;br /&gt;
== Анализ времени выполнения доступа / поиска в списке ==&lt;br /&gt;
&lt;br /&gt;
=== Средний случай ===&lt;br /&gt;
Можно показать, что в среднем случае время, необходимое для поиска в самоорганизующемся списке размера n, равно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;Tavg = 1 * p(1) + 2 * p(2) + 3 * p(3) + . . . + n * p(n).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где p (i) - это вероятность доступа к i-му элементу в списке, также называемая вероятностью доступа. Если вероятность доступа каждого элемента одинакова (т.е. p (1) = p (2) = p (3) = ... = p (n) = 1 / n), то порядок элементов не имеет значения, и средняя временная сложность определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;T(n) = 1/n + 2/n + 3/n + ... + n/n = (1 + 2 + 3 + ... + n)/n = (n+1)/2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и T (n) в этом случае не зависит от индивидуальных вероятностей доступа элементов в списке. Однако в случае поиска в списках с неоднородными вероятностями доступа к записи (т. е. В тех списках, в которых вероятность доступа к одному элементу отличается от другого), средняя временная сложность может быть значительно снижена путем правильного позиционирования элементов, содержащихся в список.&lt;br /&gt;
&lt;br /&gt;
Это достигается путем объединения меньшего i с большей вероятностью доступа, чтобы уменьшить общую среднюю временную сложность. Это можно продемонстрировать следующим образом:&lt;br /&gt;
&lt;br /&gt;
Дан список: A (0,1), B (0,1), C (0,3), D (0,1), E (0,4)&lt;br /&gt;
&lt;br /&gt;
Без переупорядочивания среднее необходимое время поиска составляет:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;T(n) = 1*0.1 + 2*0.1 + 3*0.3 + 4*0.1 + 5*0.4 = 3.6&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь предположим, что узлы переупорядочены так, что узлы с наибольшей вероятностью доступа расположены ближе всего к передней части, так что теперь переупорядоченный список:&lt;br /&gt;
&lt;br /&gt;
E (0,4), C (0,3), D (0,1), A (0,1), B (0.1)&lt;br /&gt;
&lt;br /&gt;
Здесь среднее время поиска:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;T(n) = 1*0.4 + 2*0.3 + 3*0.1 + 4*0.1 + 5*0.1 = 2.2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, среднее время, необходимое для поиска в организованном списке (в данном случае) примерно на 40% меньше, чем время, необходимое для поиска в случайно организованном списке. Это концепция самоорганизующегося списка, заключающаяся в том, что средняя скорость извлечения данных увеличивается за счет переупорядочивания узлов в соответствии с частотой доступа.&lt;br /&gt;
&lt;br /&gt;
=== Худший случай ===&lt;br /&gt;
В худшем случае элемент, который нужно получить, находится в самом конце списка, будь то обычный список или самоорганизующийся, и, следовательно, для его достижения необходимо провести n сравнений. Следовательно, время выполнения линейного поиска в списке в худшем случае составляет O(n) независимо от типа используемого списка. Обратите внимание, что выражение для среднего времени поиска в предыдущем разделе является вероятностным. Сохранение часто используемых элементов в начале списка просто снижает вероятность наихудшего случая, но не устраняет его полностью. Даже в самоорганизующемся списке, если необходимо получить доступ к элементу с наименьшей вероятностью доступа (который, очевидно, находится в конце списка), для его извлечения необходимо полностью просмотреть весь список.&lt;br /&gt;
&lt;br /&gt;
=== Лучший случай ===&lt;br /&gt;
В лучшем случае ищется узел, к которому обычно обращаются, и, таким образом, он был идентифицирован списком и сохранен в начале. Это приведет к работе с почти постоянным временем. В нотации большого в лучшем случае доступ к элементу является операцией O(1).&lt;br /&gt;
&lt;br /&gt;
== Способы перестановки узлов ==&lt;br /&gt;
При упорядочивании элементов в списке вероятности доступа к элементам обычно неизвестны заранее. Это привело к разработке различных эвристик для определения оптимального поведения. Основные эвристики, используемые для изменения порядка элементов в списке:&lt;br /&gt;
&lt;br /&gt;
=== Метод перехода на передний план (MTF) ===&lt;br /&gt;
Этот метод перемещает элемент, к которому осуществляется доступ, в начало списка. Это имеет то преимущество, что оно легко реализуется и не требует дополнительной памяти. Эта эвристика также быстро адаптируется к быстрым изменениям в распределении запросов. С другой стороны, этот метод может отдавать приоритет редко используемым узлам - например, если к необычному узлу обращаются хотя бы один раз, он перемещается в начало списка и получает максимальный приоритет, даже если он не будет часто использоваться в будущее. Эти узлы с «избыточным вознаграждением» нарушают оптимальный порядок списка и приводят к более медленному времени доступа для часто используемых элементов. Другой недостаток заключается в том, что этот метод может стать слишком гибким, что приведет к слишком быстрому изменению шаблонов доступа.&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MTF_Algorithm.png|ссылка=https://en.wikipedia.org/wiki/File:MTF_Algorithm.png|330x330пкс|Move To Front Algorithm]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Если выбран 5-й узел, он перемещается на передний план.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 At the t-th item selection:&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; item i is selected:&lt;br /&gt;
         move item i to head of the list&lt;br /&gt;
&lt;br /&gt;
=== Метод подсчета ===&lt;br /&gt;
В этом методе подсчитывается количество поисков каждого узла, т. е. каждый узел хранит отдельную переменную счетчика, которая увеличивается при каждом вызове. Затем узлы переупорядочиваются по убыванию количества. Таким образом, узлы с наибольшим количеством, т. е. наиболее часто используемые, остаются во главе списка. Основное преимущество этого метода состоит в том, что он, как правило, более реалистично отображает реальный шаблон доступа. Однако существует дополнительное требование к памяти, а именно поддержание переменной счетчика для каждого узла в списке. Кроме того, этот метод не может быстро адаптироваться к быстрым изменениям в схемах доступа. Например: если счетчик головного элемента говорит, что приоритет A равен 100, а приоритет узла B после него равен 40, то даже если B становится новым наиболее часто используемым элементом, к нему должны обратиться как минимум 100-40 = 60 раз, прежде чем он сможет стать головным элементом и, таким образом, сделать упорядочение списка оптимальным.&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[File:CountAlgorithm.png|ссылка=https://en.wikipedia.org/wiki/File:CountAlgorithm.png|330x330пкс|Count Algorithm]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Если 5-й узел в списке ищется дважды, он будет заменен на 4-й.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;init:&amp;#039;&amp;#039;&amp;#039; count(i) = 0 for each item i&lt;br /&gt;
 At t-th item selection:&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; item i is searched:&lt;br /&gt;
         count(i) = count(i) + 1&lt;br /&gt;
         rearrange items based on count&lt;br /&gt;
&lt;br /&gt;
=== Метод транспонирования ===&lt;br /&gt;
Этот метод включает замену узла, к которому осуществляется доступ, его предшественником. Следовательно, если осуществляется доступ к любому узлу, он заменяется на узел впереди, если только он не является головным узлом, тем самым повышая его приоритет. Этот алгоритм легко реализовать, он занимает мало места и, скорее всего, будет держать часто используемые узлы в начале списка. Однако метод транспонирования более осторожен. т.е. потребуется много обращений, чтобы переместить элемент в начало списка. Этот метод также не позволяет быстро реагировать на изменения в распределении запросов по узлам в списке.&amp;lt;div class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Transpose_Algorithm.png|ссылка=https://en.wikipedia.org/wiki/File:Transpose_Algorithm.png|330x330пкс|Transpose Algorithm]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Если выбран 5-й узел в списке, он будет заменен на 4-й.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
 At the t-th item selection:&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; item i is selected:&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; i is not the head of list:&lt;br /&gt;
             swap item i with item (i - 1)&lt;br /&gt;
&lt;br /&gt;
=== Другие методы ===&lt;br /&gt;
Исследования были сосредоточены на объединении вышеуказанных алгоритмов для повышения эффективности. Алгоритм Битнера сначала использует MTF, а затем использует метод транспонирования для более тонких перестановок. Некоторые алгоритмы рандомизированы и пытаются предотвратить чрезмерное вознаграждение редко используемых узлов, которое может возникнуть в алгоритме MTF. Другие методы включают реорганизацию узлов на основе вышеупомянутых алгоритмов после каждых n обращений к списку в целом или после n обращений подряд к конкретному узлу и так далее. Некоторые алгоритмы переупорядочивают узлы, к которым осуществляется доступ, в зависимости от их близости к головному узлу, например: алгоритмы Swap-With-Parent или Move-To-Parent. Другой класс алгоритмов используется, когда шаблон поиска демонстрирует свойство, называемое локальностью ссылки, посредством чего в заданный интервал времени вероятностно наиболее вероятно получить доступ только к меньшему подмножеству списка. Это также называется зависимым доступом, когда вероятность доступа конкретного элемента зависит от вероятности доступа его соседних элементов. Такие модели распространены в реальных приложениях, таких как базы данных или файловые системы, а также управление памятью и кэширование. Обычная структура для алгоритмов, работающих с такими зависимыми средами, состоит в том, чтобы переупорядочить список не только на основе доступной записи, но и на основе записей рядом с ней. Это фактически включает реорганизацию подсписка списка, которому принадлежит запись.&lt;br /&gt;
&lt;br /&gt;
== Приложения самоорганизующихся списков ==&lt;br /&gt;
Переводчики языков, такие как компиляторы и интерпретаторы, используют самоорганизующиеся списки для поддержки [[Таблица символов|таблиц символов]] во время компиляции или интерпретации исходного кода программы. В настоящее время ведутся исследования по включению самоорганизующейся структуры данных списка во встроенные системы для снижения активности переключения шины, которая приводит к рассеянию мощности в этих схемах. Эти списки также используются в [[Искусственный интеллект|искусственном интеллекте]] и [[Нейронные сети|нейронных сетях]], а также в самонастраивающихся программах. Алгоритмы, используемые в самоорганизующихся списках, также используются в качестве [[Алгоритмы кэширования|алгоритмов кэширования]], как и в случае алгоритма LFU.&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references group=&amp;quot;&amp;quot; responsive=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/references&amp;gt;&lt;br /&gt;
&amp;lt;references group=&amp;quot;&amp;quot; responsive=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* {{Citation|title=Self Organization|url=http://courses.cs.vt.edu/~cs2604/spring04/Notes/C16.SelfOrganizingLists.pdf|year=2004}}&lt;br /&gt;
* NIST [https://xlinux.nist.gov/dads/HTML/selfOrganizingList.html DADS entry]&lt;br /&gt;
* A Drozdek, Data Structures and Algorithms in Java Third edition&lt;br /&gt;
* {{Citation|last=Amer|first=Abdelrehman|author2=B. John Oommen|title=Lists on Lists: A Framework for Self-organizing Lists in Environments with Locality of Reference|volume=4007|year=2006|doi=10.1007/11764298|isbn=978-3-540-34597-8|series=Lecture Notes in Computer Science}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{изолированная статья}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структуры данных]]&lt;/div&gt;</summary>
		<author><name>ru_wikipedia&gt;Timur Sagdenov</name></author>
	</entry>
</feed>