<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859430</guid>
        <pubDate>Sun, 20 Feb 2022 04:37:59 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859430</link>
        <description><![CDATA[FasterHarder: понял, спс. за ссылки]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859416</guid>
        <pubDate>Sat, 19 Feb 2022 17:31:16 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859416</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=425754&view=findpost&p=3859399'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2022-02-19T05:52:33+00:00">19.02.22, 05:52</time></span><div class='quote '>Кроме О, есть обозначения ТЕТТА, СИГМА (и их строчные аналоги). Кстати, еще есть о-малое, но там совсем туманно</div></div><br>
Ну для начала так: <a class='tag-url' href='https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C#%D0%90%D1%81%D0%B8%D0%BC%D0%BF%D1%82%D0%BE%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%' target='_blank'>ссылка 1</a>, <a class='tag-url' href='https://habr.com/ru/post/188010/' target='_blank'>ссылка 2</a><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=425754&view=findpost&p=3859399'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2022-02-19T05:52:33+00:00">19.02.22, 05:52</time></span><div class='quote '>Как делаешь такую оценку или нет в этом необходимости в принципе?? Какую скорость в сек. для программы считаешь приемлемой в критических случаях?</div></div><br>
Да я вообще не программист и программ не пишу&#33; у меня терпежу никогда не хватает на такие длинные задачи.<br>
Сетевой админ я...]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859405</guid>
        <pubDate>Sat, 19 Feb 2022 15:55:59 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859405</link>
        <description><![CDATA[AVA12: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Лучшие алгоритмы сортировки дают O(N*logN)</div></div><br>
Протестую&#33; Поразрядная сортировка требует O(N), а &quot;быстрая поразрядная&quot;, к тому же, делается &quot;на месте&quot;.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859399</guid>
        <pubDate>Sat, 19 Feb 2022 05:52:33 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859399</link>
        <description><![CDATA[FasterHarder: <strong class='tag-b'>MIF</strong>, тут как бы это, мы обсуждаем вычислительную сложность текущего алгоритма, т е не нужен никакой новый алгоритм), но за предложение спс), все когда-нибудь пригодится<br>
<br>
-----------------------------<br>
<strong class='tag-b'>Akina</strong>, еще есть такие моменты (их много, поэтому заберу у тебя не оч.мало времени на все моменты).<br>
Кроме О, есть обозначения ТЕТТА, СИГМА (и их строчные аналоги). Кстати, еще есть о-малое, но там совсем туманно, оно вроде отвечает за точную оценку сложности, но точную оценку практически невозможно получить...<br>
-------------------------------<br>
<br>
О-большое - верхняя оценка, как я понимаю, т е ХУЖЕ этой оценки алгоритм НЕ сможет работать. Означает ли это, что в этом случае надо брать ТОЛЬКО худшие случаи оценки всех входящих алгоритмов в состав более сложного алгоритма? Опять на примере qsort, худшее поведение ее О(N^2), поэтому надо брать именно его, но ВЕЗДЕ берут средний случай O(n * log(n)), но это ведь неправильно?) Т е можно брать n * log(n), но тогда не нужно писать О-большое получается, хм...<br>
---------------------------------<br>
<br>
Насколько ТЕТТА-большая реально пригождается при анализе? Такое впечатление, что можно не обращать внимание, т к все равно реальную сложность алгоритма не отражает (обычно совпадает с О-большое).<br>
----------------------------------<br>
<br>
СИГМА-большое - по факту берет на оценку ЛУЧШИЕ случаи работы алгоритма, т е ЛУЧШЕ этой оценки алгоритм НЕ сможет работать. На практике оказывается бесполезным, т к полагаться исключительно на лучшие исходы, как минимум глупо? Еще есть сигма-малое, но там нестрогое проверяется что-то, т е почти аналог СИГМА-большому.<br>
---------------------------------<br>
<br>
При анализе сложности алгоритмов достаточно ВСЕГДА концентрироваться только на О-большом (худшее поведение) и не обращать внимания на остальных &quot;греков&quot; (ТЕТТА-малое-большое, СИГМА-малое-большое, о-малое)?<br>
---------------------------------<br>
<br>
Анализ сложности алгоритма в принципе уместен только тогда, когда есть циклы и рекурсия? Если есть набор простых линейных действий, то сложность автоматически становится О(1)? Пример: &quot;надо найти корни квадратного уравнения&quot;. ПОлучается сложность этого алгоритма О(1)??? Операции типа &quot;+,-,*,sqrt...&quot; принимаем за выполняющиеся мгновенно за О(1) и получается сумма операций сложности О(1) дает в результате также О(1)?? Но в реальности все равно какое-то процессорное время они заберут, но этим пренебрегаем.<br>
---------------------------------<br>
<br>
<strong class='tag-b'>Akina</strong>, ведь можно прикинуть &quot;на глазок&quot;, сколько времени будет выполняться тот или иной алгоритм в сек. например. Сколько ты в реальности принимаешь способность процессора выполнять элементарных инструкций 10^7, 10^8, 10^9, 10^10 за секунду?? Например, если есть сортировка пузырьком со сложностью О(N^2), то можно примерно прикинуть, при каком N время работы составить около 1 секунды. Например, если берем процессор со 10^8 операций в секунду, то получаем N ~ sqrt(10^8) = 10 000 элементов, т е, если взять 10 100 элементов, то время работы программы может перевалить за 1 сек. Как делаешь такую оценку или нет в этом необходимости в принципе?? Какую скорость в сек. для программы считаешь приемлемой в критических случаях?<br>
----------------------------------<br>
<br>
Согласен с утверждением, что, если в программе небольшое N (элементов, например = 100), то алгоритм оказывается в принципе не важен, имеется в виду, не экспоненциальные случаи (типа N&#33;), а полиномиальные, т е в принципе N^2 (10 000), N*log(N) = 100 * 8 = 800, N * log(N)^2 = 6 400 и др. с точки зрения производительности процессора они все будут выполняться &quot;почти&quot; мгновенно?<br>
----------------------------------<br>
<br>
Все, что мы рассматриваем в этом топике можно отнести к введению в анализ алгоритмов, т е это 1-2 класс по 11годовой программе (условно). Теория ушла далеко вглубь в этой области и там начинается чертовщина лютая на каком-то этапе, т е там уже задают на вход не просто N, а всякие функции, какая-то подвязка идет P, NP, какие-то коэффициенты альфа вводят, уже не просто N^k, a N^k&#39; и пр. пр. Насколько нужно это все дело изучать глубже или достаточно хотя бы основательно понимать эту базу (1-2 класс)? Интересует твой ответ с высоты опыта. А так понятно, что чем больше знать - тем лучше))<br>
<br>
<strong class='tag-b'>Akina</strong>, спс за внимание) при возможности пробегись по всем вопросам(моментам), хотя бы кратко.]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859395</guid>
        <pubDate>Fri, 18 Feb 2022 21:03:11 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859395</link>
        <description><![CDATA[MIF: Предлагаю следующий алгоритм:<br>Проверка всех точек на совпадение их координат и об’единение совпадающих;<br>Нахождение всех отрезков;<br>Упорядочивание их по длине;<br>Проверка отрезков одинаковой длины на квадрат;<br>Если надо посчитать совпадающие квадраты, то для каждого квадрата со сгруппированными точками найти все совпадающие квадраты.]]></description>
        <author>MIF</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859394</guid>
        <pubDate>Fri, 18 Feb 2022 20:54:22 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859394</link>
        <description><![CDATA[MIF: Если алгоритм сбора всех отрезков и их упорядочивания быстрее алгоритма проверки на квадрат, то поиск всех отрезков, их упорядочивание и проверка групп отрезков на квадрат будет быстрее сбора всех четырехугольников и проверки их на квадрат.]]></description>
        <author>MIF</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859393</guid>
        <pubDate>Fri, 18 Feb 2022 20:47:01 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859393</link>
        <description><![CDATA[MIF: Надо отметить, что упорядочивание листа - не самая медленная операция. Составление листа медленнее перебора. Его сложность О(n^2)]]></description>
        <author>MIF</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859392</guid>
        <pubDate>Fri, 18 Feb 2022 20:42:30 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859392</link>
        <description><![CDATA[MIF: Имо, упорядочение всех отрезков по длине и сканирование полученного листа быстрее полного перебора всех точек. <br>В вырожденном случае, когда все точки находятся в одной позиции, вариант с упорядочиванием будет чуть медленнее, в общем случае он быстрее. Его сложность  О(n* log(n) меньше O(n^5).]]></description>
        <author>MIF</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859389</guid>
        <pubDate>Fri, 18 Feb 2022 17:17:17 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859389</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=425754&view=findpost&p=3859381'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2022-02-18T14:26:02+00:00">18.02.22, 14:26</time></span><div class='quote '>Поэтому ВООБЩЕ средний случай оценить практически нереально.</div></div><br>
именно поэтому при оценке сложности алгоритма берут ХУДШИЙ случай? Если, да, то почему, когда говорят про Quick Sort берут за основу О(n * log(n)), хотя у нее худший случай, как, например, у сортировки выбором, т е О(n^2)?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=425754&view=findpost&p=3859381'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2022-02-18T14:26:02+00:00">18.02.22, 14:26</time></span><div class='quote '>Каждый из циклов отработает N раз (множитель, как обычно, опускаем).<br>
<br>
При этом до &quot;донышка&quot; на каждом цикле мы дойдём (как обычно, опускаем степени нижнего порядка) N3, N2, N и 1 раз соответственно. Сумма - (опять опускаем степени нижнего порядка) N3. </div></div><br>
вот этот момент вот не совсем понял вроде) ПОЧЕМУ (точнее, ЗАЧЕМ) берем СУММУ, они ведь выполняются не последовательно, а вкладываются 1 в другой? хм...Я к тому, что вложенные циклы ведь перемножают, а не суммируют...Зачем доказывать через сумму вложенные циклы? А то, что цикл по i отработает 1 раз, цикл по j отработает i*N = 1*N = N раз, цикл по k отработает i*j*N = N^2 и т.д. понятно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=425754&view=findpost&p=3859381'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2022-02-18T14:26:02+00:00">18.02.22, 14:26</time></span><div class='quote '>Лучшие алгоритмы сортировки дают O(N*logN). Последующий поиск четвёрки не хуже O(n). Их сумма - O(N*logN). </div></div><br>
точно, ведь из суммы выбирают самый &quot;тяжелый&quot; множитель, а это будет О(для сортировки) и сложностью О(n) можно пренебречь (особенно при возрастающем n)]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859381</guid>
        <pubDate>Fri, 18 Feb 2022 14:26:02 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859381</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=425754&view=findpost&p=3859373'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2022-02-18T12:56:03+00:00">18.02.22, 12:56</time></span><div class='quote '>Говорят, что средняя сложность такого алгоритма в районе O(N^2), но как ее получают???</div></div><br>
Какую только хню не говорят... не верь.<br>
<br>
Средняя температура по больнице - вообще неблагодарная вещь. Поэтому ВООБЩЕ средний случай оценить практически нереально. Но попробуем оценить сложность, когда заведомо есть строго одна четвёрка.<br>
<br>
Местоположение каждого отдельного из чисел четвёрки случайно. Четвёрка будет найдена, когда внешний цикл достигнет самого первого из них, второй по вложенности - второго... самый внутренний - самого последнего из них.<br>
<br>
Сколько раз отработают циклы?<br>
<br>
Каждый из циклов отработает N раз (множитель, как обычно, опускаем).<br>
<br>
При этом до &quot;донышка&quot; на каждом цикле мы дойдём (как обычно, опускаем степени нижнего порядка) N<sup class='tag-sup'>3</sup>, N<sup class='tag-sup'>2</sup>, N и 1 раз соответственно. Сумма - (опять опускаем степени нижнего порядка) N<sup class='tag-sup'>3</sup>. <br>
<br>
Общая сложность = O(N * N^3) = O(N^4).<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=425754&view=findpost&p=3859373'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2022-02-18T12:56:03+00:00">18.02.22, 12:56</time></span><div class='quote '>Понятно, что для поиска хотя бы одной 4рки сначала стоит упорядочить массив. Ок, кратко разберем этот вариант.</div></div><br>
Лучшие алгоритмы сортировки дают O(N*logN). Последующий поиск четвёрки не хуже O(n). Их сумма - O(N*logN). <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2022-02-18T14:33:34+00:00">18.02.22, 14:33</time></span></span><br>
PS. Ещё обоснование O(n^4). Если количество чисел увеличить в K раз, то среднее местоположение (позиция в списке) каждого числа увеличится в K раз. Соответственно количество итераций внешнего, наиболее затратного, этапа, до нахождения первого из чисел увеличится в K раз, количество внутренних итераций в K^3 раз, а всего количество увеличится в K*K^3=K^4 раз.]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859373</guid>
        <pubDate>Fri, 18 Feb 2022 12:56:03 +0000</pubDate>
        <title>Помогите оценить сложность алгоритма поиска одинаковых 4рех чисел в массиве</title>
        <link>https://forum.sources.ru/index.php?showtopic=425754&amp;view=findpost&amp;p=3859373</link>
        <description><![CDATA[FasterHarder: Всем хай&#33; Сходу к делу&#33;<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">Есть такая задачка: дан одномерный массив А, состоящий из N целых чисел. Проверить, есть ли в этом массиве хоть одна 4рка одинаковых элементов. Оценить сложность алгоритма.<br>
</span></strong><br>
<br>
Сразу договоримся, что массив уже заполнен и идет непосредственно поиск. И речь идет про оценку вычислительной сложности (временной), а не пространственной (про память, т к здесь память дополнительная не юзается и все происходит &quot;in place&quot; - на месте)<br>
Вот фрагмент кода (псевдокода), который ищет первую 4рку одинаковых элементов:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">for ( int i = 0; i &#60; n - 3; i++ )</div><div class="code_line">&nbsp;&nbsp; &nbsp;for ( int j = i + 1; j &#60; n - 2; j++ )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( a[ i ] == a[ j ] )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( int k = j + 1; k &#60; n - 1; k++ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( a[ i ] == a[ k ] )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( int l = k + 1; l &#60; n; l++ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( a[ i ] == a[ l ] )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return ...; &nbsp; &nbsp; // первая четверка одинаковых чисел найдена</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">return ...; &nbsp; &nbsp; // среди элементов массива a длины n нет ни одной четверки одинаковых чисел</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Это брутфорс (полный перебор всех возможных четверок). И пусть это неоптимальное решение(алгоритм), но хочется обсудить именно этот вариант.<br>
<br>
а) Какой здесь лучший случай? Как я понимаю, когда 4рка элементов есть и она находится в самом начале массива. В этом случае сложность О(1)? операциями типа i = 0, j = i + 1 и пр. пренебрегаем, хотя, даже если их учесть, там будет что-то О(4) или О(8), что все равно запишем, как О(1)<br>
б) Какой здесь худший случай? Это когда в массиве нет ни одной 4рки одинаковых элементов и тогда все 4ре цикла будут работать ОТ и ДО и получим (n - 3) * (n - 2) * (n - 1) * n ~ N^4, хотя формула здесь не совсем такая будет, т к счетчики j, k, l идут не от 0, но на асимптотике это не сказывается итоговой, как я понимаю, поэтому сложность O(N^4) - полином 4ой степени.<br>
в) <span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>Какой здесь средний случай?</strong></span> Этот момент вызывает больше всех вопросов&#33; В теории не смог найти объяснения такого поведения алгоритма.<br>
Если посчитать среднее как полусумму концевых случаев (лучшего и случая), то вроде будет бред, т е Oср = (O(1) + O(N^4))/2 --&#62; N^4, т к коэффициентами пренебрегаем. Если так и можно посчитать, значит, я ошибся при получении лучшего случая и там не О(1)...<br>
Итак, как считать средний случай.<br>
1. При запусках предполагаем, что в одном запуске есть 4рка чисел, в другом нет (для второго случая сложность О(N^4) )<br>
2. Если 4рка есть, то берем ее по центру массива, в этом случае i успевает пробежать от 0 до N/2 (грубо если), ну, в принципе остальные счетчики аналогично (оч.грубо если), т е N/2 и получаем N/2 * N/2 * N/2 * N/2 = (N/2)^4 = N^4/8 ---&#62; N^4 и снова что ли N^4  :angry: Не кажется ли это странным?) хм..<br>
<span class="tag-color tag-color-named" data-value="purple" style="color: purple">Говорят, что средняя сложность такого алгоритма в районе O(N^2), но как ее получают??? Подскажите, плиз</span><br>
------------------------------------------<br>
Понятно, что для поиска хотя бы одной 4рки сначала стоит упорядочить массив. Ок, кратко разберем этот вариант.<br>
а) сортируем массив А. Любым способом. Сложность О(алгоритм выбранной сортировки)<br>
б) а затем интересный момент. Не уверен, что дальше будет сложность линейного перебора за время О(N), хотя, если пренебречь проверками аля (a[i] == a[i + 1] &amp;&amp; {a[i] == a[i+2]...), то, тогда вроде будет О(n)<br>
и итоговая сложность алгоритма:<br>
1. лучший случай: О(алгоритм выбранной сортировки) * О(1)<br>
2. худший: O(n) + O(алгоритм выбранной сортировки)<br>
3. средний случай: O(n/2) + O(алгоритм выбранной сортировки) ----&#62; почти худший случай, хм.. разница вроде совсем не велика на величину N/2<br>
<br>
Поясните, плиз, за эти рассуждения, буду оч.признателен.<br>
спс. за внимание..]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	