<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=188.162.65.23&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=188.162.65.23&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/188.162.65.23"/>
		<updated>2026-04-23T04:46:19Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%83%D1%80%D0%B1%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%91%D0%BE%D0%B9%D0%B5%D1%80%D0%B0-%D0%9C%D1%83%D1%80%D0%B0&amp;diff=53363</id>
		<title>Турбо-алгоритм Бойера-Мура</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%83%D1%80%D0%B1%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%91%D0%BE%D0%B9%D0%B5%D1%80%D0%B0-%D0%9C%D1%83%D1%80%D0%B0&amp;diff=53363"/>
				<updated>2016-04-18T16:47:02Z</updated>
		
		<summary type="html">&lt;p&gt;188.162.65.23: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Турбо-алгоритм Бойера-Мура''' (англ. ''Turbo Boyer-Moore'')  является улучшением [[Алгоритм Бойера-Мура|алгоритма Бойера-Мура]]. Турбо-алгоритм, разработанный группой учёных во главе с М.Крочемором, предлагает другой подход к коротким алфавитам и заодно решает вторую проблему — квадратичную сложность в худшем случае.&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
Турбо-алгоритм Бойера-Мура не нуждается в дополнительном препроцессинге и требует только постоянную дополнительную память относительно оригинального алгоритма Бойера-Мура. Он состоит в запоминании сегмента текста, который соответствует суффиксу шаблона во время последней попытки (и только тогда, когда сдвиг хорошего суффикса был выполнен).&lt;br /&gt;
Эта методика представляет два преимущества:&lt;br /&gt;
# Можно перепрыгнуть через этот сегмент.&lt;br /&gt;
# Она может позволить выполнение «турбо-сдвига».&lt;br /&gt;
Турбо-сдвиг может произойти, если мы обнаружим, что суффикс образца, который сходится с текстом, короче, чем тот, который был запомнен ранее.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; — запомненный сегмент, а &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; — cуффикс, совпавший во время текущей попытки, такой что &amp;lt;tex&amp;gt;uzv&amp;lt;/tex&amp;gt; — суффикс &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;av&amp;lt;/tex&amp;gt; — суффикс &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, два символа &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; встречаются на расстоянии &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; в тексте, и суффикс &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;|uzv|&amp;lt;/tex&amp;gt; имеет период длины &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, а значит не может перекрыть оба появления символов &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; в тексте. Наименьший возможный сдвиг имеет длину &amp;lt;tex&amp;gt;|u| - |v|&amp;lt;/tex&amp;gt;  (его мы и называем турбо-сдвигом).[[Файл:Tbm1.png|800px|center]]&lt;br /&gt;
&lt;br /&gt;
===Применение турбо-сдвига в случае |v| &amp;lt; |u|===&lt;br /&gt;
При &amp;lt;tex&amp;gt;|v| &amp;lt; |u|&amp;lt;/tex&amp;gt;, если сдвиг плохого символа больше, то совершаемый сдвиг будет больше либо равен &amp;lt;tex&amp;gt;|u| - 1&amp;lt;/tex&amp;gt;. В этом случае символы &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; различны, так как мы предположили, что предыдущий сдвиг был сдвигом хорошего суффикса. Тогда сдвиг больший, чем турбо-сдвиг, но меньший &amp;lt;tex&amp;gt;|u| + 1&amp;lt;/tex&amp;gt; совместит &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; с одним и тем же символом &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;. Значит, если сдвиг плохого символа больше, то мы можем применить сдвиг больший либо равный &amp;lt;tex&amp;gt;|u| + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
[[Файл:Tbm2.png|800px|center]]&lt;br /&gt;
Нельзя совместить символы &amp;lt;tex&amp;gt;c \neq d&amp;lt;/tex&amp;gt; с одним и тем же символом &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Псевдокод==&lt;br /&gt;
Стадия препроцессинга совпадает со стадией препроцессинга в [[Алгоритм Бойера-Мура|алгоритме Бойера-Мура]].&lt;br /&gt;
&lt;br /&gt;
В сам алгоритм добавляется обработка турбо-сдвигов.&lt;br /&gt;
 '''function''' TBM('''char'''[] x, '''char'''[] y)&lt;br /&gt;
    '''int''' n = length(y)&lt;br /&gt;
    '''int''' m = length(x)&lt;br /&gt;
    '''int''' i = 0&lt;br /&gt;
    '''int''' u = 0&lt;br /&gt;
    '''int''' shift = m&lt;br /&gt;
 &lt;br /&gt;
    '''if''' (m == 0)&lt;br /&gt;
         '''return'''&lt;br /&gt;
         &lt;br /&gt;
    &amp;lt;font color=green&amp;gt;//Предварительные вычисления&amp;lt;/font&amp;gt;&lt;br /&gt;
    '''int''' bmBc[] = preBmBc(x, m)&lt;br /&gt;
    '''int''' bmGs[] = preBmGs(x, m)&lt;br /&gt;
 &lt;br /&gt;
    '''while''' (i &amp;lt;= n - m) &lt;br /&gt;
        '''int''' j = m - 1&lt;br /&gt;
        '''while''' (j &amp;gt;= 0 '''and''' x[j] == y[i + j])&lt;br /&gt;
            --j&lt;br /&gt;
            '''if''' (u != 0 '''and''' j == m - 1 - shift) &lt;br /&gt;
                j -= u&lt;br /&gt;
        '''if''' (j &amp;lt; 0) &lt;br /&gt;
            print(i)&lt;br /&gt;
            shift = bm_gs[0]&lt;br /&gt;
            u = m - shift&lt;br /&gt;
        '''else''' &lt;br /&gt;
            '''int''' v = m - 1 - j&lt;br /&gt;
            '''int''' turbo_shift = u - v&lt;br /&gt;
            '''int''' bc_shift = bm_bc[y[i + j]] - m + j + 1&lt;br /&gt;
            shift = max(turbo_shift, bc_shift, bm_gs[j + 1])&lt;br /&gt;
            '''if''' (shift == bm_gs[j + 1])&lt;br /&gt;
                u = min((m - shift), v)&lt;br /&gt;
            '''else''' &lt;br /&gt;
                '''if''' (turbo_shift &amp;lt; bc_shift) &lt;br /&gt;
                    shift = min(shift, (u + 1))&lt;br /&gt;
                u = 0&lt;br /&gt;
        i += shift&lt;br /&gt;
&lt;br /&gt;
==Асимптотика==&lt;br /&gt;
{{Утверждение|statement= &lt;br /&gt;
* Фаза препроцессинга требует &amp;lt;tex&amp;gt;O(m + \sigma)&amp;lt;/tex&amp;gt; времени и памяти, где &amp;lt;tex&amp;gt;\sigma&amp;lt;/tex&amp;gt; {{---}} размер алфавита. &lt;br /&gt;
* Фаза поиска требует &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; времени.&lt;br /&gt;
* В худшем случае поиск требует &amp;lt;tex&amp;gt;O(2n)&amp;lt;/tex&amp;gt; сравнений.&lt;br /&gt;
|proof= Стадия препроцессинга совпадает со стадией препроцессинга в [[Алгоритм Бойера-Мура|алгоритме Бойера-Мура]], поэтому рассмотрим только стадию поиска.&lt;br /&gt;
&lt;br /&gt;
Разобьём поиск на стадии. Каждая стадия делится на две операции: сканирование и сдвиг. На этапе &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; мы назовём &amp;lt;tex&amp;gt;suf_k&amp;lt;/tex&amp;gt; длину суффикса шаблона, что совпадает с текстом. Этому предшествует символ, который не совпадает с соответствующим символом в тексте (в случае когда &amp;lt;tex&amp;gt;suf_k&amp;lt;/tex&amp;gt; не соответствует длине шаблона). Мы также назовём &amp;lt;tex&amp;gt;shift_k&amp;lt;/tex&amp;gt; длину сдвига, сделанного на этапе &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим три типа стадий в зависимости от характера сканирования и сдвига. Мы говорим, что сдвиг на стадии &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; короткий, если &amp;lt;tex&amp;gt;2shift_k &amp;lt; suf_k + 1&amp;lt;/tex&amp;gt;. Тогда три типа сдвигов будут: &lt;br /&gt;
# Стадия с последующей стадией с прыжком.&lt;br /&gt;
# Стадия с длинным сдвигом, без последующей стадии с прыжком.&lt;br /&gt;
# Стадия с коротким сдвигом, без последующей стадии с прыжком.&lt;br /&gt;
Идея доказательства состоит в амортизации сравнения со сдвигами. Определим стоимость &amp;lt;tex&amp;gt;cost_k&amp;lt;/tex&amp;gt; следующим образом:&lt;br /&gt;
* Если стадия &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; имеет тип (1), &amp;lt;tex&amp;gt;cost_k = 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Если стадия &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; имеет тип (2) или (3), стоимость &amp;lt;tex&amp;gt;cost_k = suf_k + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
В случае стадии типа (1), стоимость соответствует единственному сравнению несовпадающих символов. Другие сравнения, проведенные в течение той же стадии, являются&lt;br /&gt;
стоимостью последующих этапов. Общее количество сравнений выполняемых алгоритмом это сумма стоимостей. Мы хотим доказать, что &amp;lt;tex&amp;gt; \sum cost &amp;lt; 2 \sum shifts&amp;lt;/tex&amp;gt;. Во второй &amp;lt;tex&amp;gt; \sum &amp;lt;/tex&amp;gt; длину последнего сдвига заменим &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;. Даже с этим предположением, мы имеем &amp;lt;tex&amp;gt; \sum shifts &amp;lt; |t|&amp;lt;/tex&amp;gt;, и если неравенство выполняется, тo &amp;lt;tex&amp;gt; \sum cost &amp;lt; 2|t|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для стадии типа (1), &amp;lt;tex&amp;gt;cost_k = 1&amp;lt;/tex&amp;gt; очевидным образом меньше, чем &amp;lt;tex&amp;gt;2shift_k&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;shift_k &amp;gt; 0&amp;lt;/tex&amp;gt;. Для стадии типа (2), &amp;lt;tex&amp;gt;cost_k = suf_k + 1 \leqslant 2 shift_k&amp;lt;/tex&amp;gt;, по определению длинных сдвигов. Остается рассмотреть стадии типа (3). Так как в этой ситуации мы имеем &amp;lt;tex&amp;gt;shift_k &amp;lt; suf_k&amp;lt;/tex&amp;gt;, единственный вариант, что обычный сдвиг применяется на стадии &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;. Тогда мы запоминаем этот момент. На следующей стадии, &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt;, мы что-то запомнили, что приводит к возможному турбо-сдвигу. Ситуация на стадии &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt;, основная ситуация, когда турбо-сдвиг возможен. Прежде чем продолжить доказательство, мы сначала рассмотрим два случая и установим неравенства (по стоимости стадии &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;), которые используем позже.&lt;br /&gt;
* Случай (а): &amp;lt;tex&amp;gt;suf_k + shift_k \leqslant |p|&amp;lt;/tex&amp;gt;. По определению турбо-сдвига, мы имеем &amp;lt;tex&amp;gt;suf_k - suf_{k+1} &amp;lt; shift_{k + 1}&amp;lt;/tex&amp;gt;. Таким образом, &amp;lt;tex&amp;gt;cost_k = sufk + 1 \leqslant suf_{k+1} + shift_{k+1} + 1 \leqslant shift_k + shift_{k + 1}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Случай (б): &amp;lt;tex&amp;gt;suf_k + shift_k &amp;gt; |p|&amp;lt;/tex&amp;gt;. По определению турбо-сдвига, мы имеем &amp;lt;tex&amp;gt;suf_{k+1} + shift_k + shift_{k + 1} \geqslant m&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;cost_k \leqslant m \leqslant 2shift_k - 1 + shift_{k + 1}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно считать, что на стадии &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt; случай (б) имеет место, потому что это дает нам верхнюю границу &amp;lt;tex&amp;gt;cost_k&amp;lt;/tex&amp;gt; (это верно, если &amp;lt;tex&amp;gt;shift_k \geqslant 2&amp;lt;/tex&amp;gt;, случай &amp;lt;tex&amp;gt;shift_k = 1&amp;lt;/tex&amp;gt; можно обрабатывать напрямую). Если стадия &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt; типа (1), то &amp;lt;tex&amp;gt;cost_{k + 1} = 1&amp;lt;/tex&amp;gt;, а затем &amp;lt;tex&amp;gt;cost_k + cost_{k+1} \leqslant 2shift_k + shift_{k+1}&amp;lt;/tex&amp;gt;, что даже лучше, чем ожидалось. Если на стадии &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt; мы имеем &amp;lt;tex&amp;gt;suf_{k + 1} \leqslant shift_{k + 1}&amp;lt;/tex&amp;gt;, то мы получим то, что ожидалось: &amp;lt;tex&amp;gt;cost_k + cost_{k + 1} \leqslant 2shift_k + 2shift_{k + 1}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Последняя ситуация для рассмотрения, когда на стадии &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt; мы имеем &amp;lt;tex&amp;gt;suf_{k + 1} &amp;gt; shift_{k + 1}&amp;lt;/tex&amp;gt;. Это означает, что, как уже упоминалось ранее, обычный сдвиг применяется на стадии &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, приведенный выше анализ также применяется на стадии &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt;, и, так как только случай (а) может произойти тогда мы получаем &amp;lt;tex&amp;gt;cost_{k + 1} \leqslant shift_{k + 1} + shift_{k + 2}&amp;lt;/tex&amp;gt;. Мы, наконец, получаем &amp;lt;tex&amp;gt;cost_k + cost_{k + 1} \leqslant 2shift_k + 2shift_{k + 1} + shift_{k + 2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Последний аргумент, доказывающий первый шаг индукции: если все стадии &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;k + j&amp;lt;/tex&amp;gt; таковы, что &amp;lt;tex&amp;gt;suf_k &amp;gt; shift_k,... , suf_{k + j} &amp;gt; shift_{k + j}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;cost_k + ... + cost_{k + j} \leqslant 2shift_k + ... + 2shift_{k + j} + shift_{k + j + 1}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;k'&amp;lt;/tex&amp;gt; первый этап после этапа &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;suf_{k'} \leqslant shift_{k'}&amp;lt;/tex&amp;gt;. Целое число &amp;lt;tex&amp;gt;k'&amp;lt;/tex&amp;gt; существует потому, что иначе получим бесконечную последовательность сдвигов с уменьшающейся длиной. После этого мы получим &amp;lt;tex&amp;gt;cost_k + ... + cost_{k'} \leqslant 2shift_k + ... + 2shift_{k'}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Это показывает нам, что &amp;lt;tex&amp;gt; \sum cost_k \leqslant 2 \sum shift_k&amp;lt;/tex&amp;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;
* [[wikipedia:ru:Алгоритм_Бойера_—_Мура|Википедия {{---}} Алгоритм Бойера-Мура]]&lt;br /&gt;
* [[wikipedia:Boyer–Moore_string_search_algorithm|Wikipedia {{---}} Boyer–Moore string search algorithm]]&lt;br /&gt;
* [http://www-igm.univ-mlv.fr/~lecroq/string/node15.html#SECTION00150 Turbo Boyer-Moore algorithm]&lt;br /&gt;
* [http://algolist.manual.ru/search/esearch/turbo_bm.php Турбо Боуер-Мур]&lt;br /&gt;
* [http://igm.univ-mlv.fr/~mac/Articles-PDF/CCGJLPR94algo-speedup.pdf Speeding Up Two String-Matching Algorithms]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория:Поиск подстроки в строке]]&lt;br /&gt;
[[Категория:Точный поиск]]&lt;/div&gt;</summary>
		<author><name>188.162.65.23</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%91%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B5_%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=39851</id>
		<title>Бинарное отношение</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%91%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B5_%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=39851"/>
				<updated>2014-07-10T21:04:25Z</updated>
		
		<summary type="html">&lt;p&gt;188.162.65.23: Отмена правки 39364 участника Mtcomscxstart (обсуждение) Какой ещё счётчик Кнута?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Бинарным отношением''' (англ. ''binary relation'') &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; из множества &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется подмножество прямого произведения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; и обозначается:&lt;br /&gt;
&amp;lt;tex&amp;gt;R \subset A \times B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Часто используют инфиксную форму записи:&lt;br /&gt;
&amp;lt;tex&amp;gt;aRb, \ \langle x, y \rangle\in R&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если отношение определено на множестве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, то возможно следующее определение:&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Бинарным''' (или '''двуместным''') '''отношением''' &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; на множестве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; называется множество упорядоченных пар элементов этого множества.&lt;br /&gt;
}}&lt;br /&gt;
Примерами множеств с введёнными на них бинарными отношениями являются [[Ориентированный граф|графы]] и частично упорядоченные множества.&lt;br /&gt;
&lt;br /&gt;
== Свойства отношений ==&lt;br /&gt;
Для &amp;lt;tex&amp;gt;R \subset A^2&amp;lt;/tex&amp;gt; определены свойства:&lt;br /&gt;
* [[Рефлексивное отношение|Рефлексивность]] (англ. ''reflexivity''): &amp;lt;tex&amp;gt;\mathcal {8} x \in A \  (xRx)&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* [[Рефлексивное отношение|Антирефлексивность]] (англ. ''irreflexivity''): &amp;lt;tex&amp;gt;\mathcal {8} x \in A \  (\neg xRx)&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* [[Симметричное отношение|Симметричность]] (англ. ''symmetry''): &amp;lt;tex&amp;gt;\mathcal {8} x,y \in A \  (xRy \Rightarrow yRx)&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* [[Антисимметричное отношение|Антисимметричность]] (англ. ''antisymmetry''): &amp;lt;tex&amp;gt;\mathcal {8} x,y \in A \  (xRy \land yRx \Rightarrow x = y)&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* [[Транзитивное отношение|Транзитивность]] (англ. ''transitivity''): &amp;lt;tex&amp;gt;\mathcal {8} x,y,z \in A \  (xRy \land yRz \Rightarrow xRz)&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* Связность: &amp;lt;tex&amp;gt;\mathcal {8} x,y \in A \  (xRy \lor yRx)&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* [[Антисимметричное отношение|Ассимметричность]] (англ. ''assymetric relation''): &amp;lt;tex&amp;gt;\mathcal {8} x,y \in A \  (xRy \Rightarrow \neg (yRx))&amp;lt;/tex&amp;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;
&lt;br /&gt;
== Примеры отношений ==&lt;br /&gt;
*Примеры [[Рефлексивное отношение|'''рефлексивных отношений''']]: равенство, одновременность, сходство.&lt;br /&gt;
*Примеры [[Рефлексивное отношение|'''нерефлексивных отношений''']]: «заботиться о», «развлекать», «нервировать».&lt;br /&gt;
*Примеры [[Транзитивное отношение|'''транзитивных отношений''']]: «больше», «меньше», «равно», «подобно», «выше», «севернее».&lt;br /&gt;
*Примеры [[Симметричное отношение|'''симметричных отношений''']]: равенство (=), неравенство, отношение эквивалентности, подобия, одновременности, некоторые отношения родства (например, отношение братства).&lt;br /&gt;
*Примеры [[Антисимметричное отношение|'''антисимметричных отношений''']]: больше, меньше, больше или равно.&lt;br /&gt;
*Примеры '''асимметричных отношений''': отношение «больше» (&amp;gt;) и «меньше» (&amp;lt;).&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Композиция_отношений|Композиция отношений]]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B5_%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5 wikipedia.org — Бинарное отношение]&lt;br /&gt;
* [http://ru.math.wikia.com/wiki/%D0%91%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B5_%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5 wikia.com - Бинарное отношение]&lt;br /&gt;
* http://www.studfiles.ru/dir/cat14/subj266/file9092/view94463/page2.html&lt;br /&gt;
&lt;br /&gt;
[[Категория:Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Отношения ]]&lt;/div&gt;</summary>
		<author><name>188.162.65.23</name></author>	</entry>

	</feed>