<?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=39346&amp;view=findpost&amp;p=2762921</guid>
        <pubDate>Sat, 27 Nov 2010 11:48:55 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2762921</link>
        <description><![CDATA[Swetlana: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=39346&view=findpost&p=2762803'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2010-11-27T09:42:06+03:00">27.11.10, 06:42</time></span><div class='quote '>:rose:</div></div><br>
:blush: <br>
<br>
Решение NP-трудных геометрических задач оптимизации - большой и довольно хорошо исследованный раздел.<br>
Если в NP-трудной задаче оптимизации есть эвклидова метрика - это подарок, значит, для этой задачи есть питасы (полиномиальные апроксимационные схемы). <br>
Если кто-то этим серьёзно занимается, пусть заведёт в этом разделе соответствующую тему и ведёт там тематический блог. С огромным удовольствием поучусь у специалиста. А пока выкладываю некий обзор способов решения наиболее известных &quot;геометрических&quot; задач, в том числе и дерева Штейнера.<br>
<br>
Arora<br>
Approximation schemes for NP-hard geometric optimization problems: A survey]]></description>
        <author>Swetlana</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2762803</guid>
        <pubDate>Sat, 27 Nov 2010 06:42:06 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2762803</link>
        <description><![CDATA[Black_Dragon: Прошу прощение за офтоп  :blush: <br>А если алгоритм не решен? А если кто-нибудь будет искать? А если у кого-то есть идеи?<br><br> :rose:]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2758470</guid>
        <pubDate>Mon, 22 Nov 2010 18:00:26 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2758470</link>
        <description><![CDATA[Swetlana: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=39346&view=findpost&p=2758392'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Graph &#064; <time class="tag-quote__quoted-time" datetime="2010-11-22T16:14:36+00:00">22.11.10, 16:14</time></span><div class='quote '>Сорри, протупил.</div></div><br>
Never mind и бобро пожаловать  :D]]></description>
        <author>Swetlana</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2758392</guid>
        <pubDate>Mon, 22 Nov 2010 16:14:36 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2758392</link>
        <description><![CDATA[Graph: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=39346&view=findpost&p=2757665'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Swetlana &#064; <time class="tag-quote__quoted-time" datetime="2010-11-21T20:04:37+00:00">21.11.10, 20:04</time></span><div class='quote '><strong class='tag-b'>Graph</strong>, у нас не принято поднимать старые темы.</div></div><br>
Сорри, протупил. Сначала ответил, потом посмотрел на дату исходного поста... :( Надеюсь, у спрашивавших когда-то студентов всё удачно сложилось с задачей Штейнера :)]]></description>
        <author>Graph</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2757565</guid>
        <pubDate>Sun, 21 Nov 2010 17:13:00 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=2757565</link>
        <description><![CDATA[Graph: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=39346&view=findpost&p=254950'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tserega &#064; <time class="tag-quote__quoted-time" datetime="2003-11-30T14:39:30+00:00">30.11.03, 14:39</time></span><div class='quote '>А как решить задачу для N &gt; 3? Точно она не решается, хотя бы приближение какое-нибуть бы найти... Помогите алгоритмом, как определить где надо построить развилки (потом соединить по SST алгоритмом Прима).</div></div><br>
Назовём структуру искомой сети топологией. Т.е. топология искомой сети - это граф, представляющий из себя дерево, вершинами которого служат исходные точки, которые нужно соединить, и промежуточные точки ветвления (т.н. точки Штейнера, или точки Торричелли). Исходные точки являются листьями этого дерева - их степень равна 1. А внутренние вершины дерева - точки Штейнера, имеют степень 3, т.е. каждая точка Штейнера соединена тремя рёбрами со смежными вершинами.<br>
<br>
Предположим, что топология искомой сети известна. Чтобы найти саму оптимальную сеть, нужно найти соответствующее данной топологии оптимальное положение точек Штейнера на плоскости. Эта частная задача (поиск оптимального расположения точек Штейнера при заданной топологии) имеет простое красивое элегантное геометрическое решение, описанное в литературе.<br>
<br>
Замечание. При некоторых расположениях исходных точек возможно совмещение точек Штейнера как между собой, так и с исходными точками.<br>
<br>
Т.о., задачу Штейнера (точно или приближённо) можно решать, организовав каким-либо образом перебор топологий. Некоторые алгоритмы на эту тему тоже описаны в литературе...]]></description>
        <author>Graph</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=259644</guid>
        <pubDate>Mon, 08 Dec 2003 11:48:15 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=259644</link>
        <description><![CDATA[AntSecam:  Я вообще не претендую на то, что мой алгоритм может оказаться верным.<br>Просто меня заинтересовала задача, ходил и думал как это сделать, то что пришло в голову решил написать здесь, вдруг пригодится.<br>Именно поэтому таких умных слов как <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->SST алгоритм Прима<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br>и т.д. могу и не знать.<br><br><!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Что есть единый объект <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br><br>Единым объектом я для удобства назвал любые соединенные точки и их соединенния.<br><br>т.е. вначале на 1 шаге объектами являются отдельные точки.<br>после того как мы соединили первые две точки (те между которыми расстояние минимально)<br>объектами являются отдельные(не соединенные) точки и единым объектом две соединенные точки, т.е. из геометрии это отрезок.<br> далее ищем расстояния между несоединенными точками( они уже были получены на 1 шаге)<br><br>и кратчайшее расстояние от  несоединенных точек до полученного отрезка.<br><br>На более высоких шагах едиными объектами быдут являться уже не отрезки а геом фигуры составленные из отрезков и кратчайшее расстояние уже нужно будет искать до любой точки принадлежащей этой фигуре.<br><br>т.е. идея в чем: <br>   у тебя есть условие, что можно ставить неограниченное число развилок в любом месте, но не понятно как найти эти места, при реализации данного алгоритма:<br><br>например кратчайшее расстояние от отрезка, до &quot;свободной&quot; точки:<br>    это либо перпендикуляр, если возможно его построить к отрезку из данной точки, либо, если невозможно построить перпендикуляр, то кратчайшее расстояние это линия к одному из концов отрезка.<br><br>нас собственно больше всего в этом алгоритме интерисует<br>случай когда возможно построить перпендикуляр к отрезку, это именно случай помешения развилки путей.<br><br>если еще чтото я намутил спроси конкретно, и я попытаюсь поэтапно отвечать на твои вопросы.<br> ]]></description>
        <author>AntSecam</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=259310</guid>
        <pubDate>Sun, 07 Dec 2003 22:55:38 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=259310</link>
        <description><![CDATA[Visitor:  В качестве первых двух точек, от которых плясать, можно выбрать два города, лежащих в соседних вершинах выпуклой оболочки, охватывающей все множество городов. Если етот выбор сделать несколько раз, с разными парами городов, лучшее из найденных решений будет близко к оптимальному...<br><br>Разумеется, можно построить пример системы городов, где ни одно из найденных таким образом решений не будет оптимальным.<br><br>Вообще, чтобы решить ету задачу необходим (усеченный) перебор, т.е., метод ветвей и границ (долго, но с гарантией), или стохастический алгоритм, например, генетический (быстро но не гарантированно). ]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=258013</guid>
        <pubDate>Fri, 05 Dec 2003 09:14:39 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=258013</link>
        <description><![CDATA[tserega:  <!--QuoteBegin-AntSecam+5.12.03, 10:28--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> (AntSecam &#064; 5.12.03, 10:28)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Строим матрицу N*N в которой записываем расстояние между каждым из городов,<br>Ищем минимальное, (исключая нулевые значения которые стоят по диагонали матрицы&nbsp; <!--emo&;)--><img src='http://forum.sources.ru/html/emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo--> ),<br>соединяем точки, для которых расстояние минимально,<br><!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br>Ну, это делается по SST алгоритмом Прима. Понятно как.<br><br><!--QuoteBegin-AntSecam+5.12.03, 10:28--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> (AntSecam &#064; 5.12.03, 10:28)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--><span style='color:red'>ВАЖНО&#33;: </span>теперь рассматриваем соединенные точки как ЕДИНЫЙ ОБЪЕКТ и ищем уже кратчайшее расстояние от каждой точки до него,<br>получаем старую матрицу в которой две строки и два столбца заменились соответственно на строку и столбец расстояний от нового объекта, до каждой из точек.<br><br><b>Замечание</b> : ясно что кратчайшее расстояние от точки до полученного выше отрезка будет либо по перпендикуляру, либо по наклонной.<br><!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br>Что есть единый объект и от каких точек мы ищем расстояние до объекта? Можно подробнее.<br><br>Те размышления, которые я видел, сводились к тому, что надо как-то строить локальные компоненты связанности (т.е. для трех точек мы ищем так называемую &quot;точку Штейнера&quot;, для которой суммарное расстояние от вершин треугольника до этой точки минимальное). Эти компоненты связанности прибавляются к искомым вершинам. Дальше продолжаем строить эти компоненты, пока вся сеть не будет связанной.<br>Только:<br>1) как лучше выбрать три вершины, для которых будем строить локальную компоненту связанности<br>2) для треугольника как найти эту &quot;точку Штейнера&quot;? (мат. формулы) ]]></description>
        <author>tserega</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=257975</guid>
        <pubDate>Fri, 05 Dec 2003 08:28:33 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=257975</link>
        <description><![CDATA[AntSecam:  Насчет связного и понятного алгоритма это тяжело, но есть некоторые соображения:<br><br>Строим матрицу N*N в которой записываем расстояние между каждым из городов,<br>Ищем минимальное, (исключая нулевые значения которые стоят по диагонали матрицы  <!--emo&;)--><img src='http://forum.sources.ru/html/emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo--> ),<br>соединяем точки, для которых расстояние минимально,<br><br><span style='color:red'>ВАЖНО&#33;: </span>теперь рассматриваем соединенные точки как ЕДИНЫЙ ОБЪЕКТ и ищем уже кратчайшее расстояние от каждой точки до него,<br>получаем старую матрицу в которой две строки и два столбца заменились соответственно на строку и столбец расстояний от нового объекта, до каждой из точек.<br><br><b>Замечание</b> : ясно что кратчайшее расстояние от точки до полученного выше отрезка будет либо по перпендикуляру, либо по наклонной.<br><br>Опять выбираем кратчайшее расстояние из новой матрицы (N-1)*(N-1) и строим его.<br><br><span style='color:yellow'>Еще раз напомню </span>: соединенные точки рассматриваем как единый объект.<br><br>И Т.Д. пока все точки не быдут соединены.<br><br>Нужно реализовать и посмотреть, будет ли решение оптимальным.<br>Потом если решение не оптимально можно попробовать вывести правила оптимизации полученного объекта.<br><br>Эт пока все что надумал  <!--emo&;)--><img src='http://forum.sources.ru/html/emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo-->  Пиши&#33;<br><br> ]]></description>
        <author>AntSecam</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=254950</guid>
        <pubDate>Sun, 30 Nov 2003 14:39:30 +0000</pubDate>
        <title>Задача Штейнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=39346&amp;view=findpost&amp;p=254950</link>
        <description><![CDATA[tserega:  Требуется решить <b>задачу Штейнера</b>: в плоской стране есть N городов, которые надо соединить дорогами так, чтобы образовалась связанная сеть. Естественно, суммарная длина дорог должна быть минимальной. В любом месте страны можно строить сколько угодно развилок (т.е. дороги могут разветвляться в чистом поле, в отличии от задачи Прима-Круксала о минимальном стягивающем дереве).<br><br>Решение для трех точек понятно: если один из углов треугольника больше 120 градусов, то две стороны треугольника образуют сеть. Если все углы меньше 120, то в треугольнике ABC ещим точку P такую, что углы APB, BPC, CPA равны 120 градусов (это сделать несложно).<br><br>А как решить задачу для N &gt; 3? Точно она не решается, хотя бы приближение какое-нибуть бы найти... Помогите алгоритмом, как определить где надо построить развилки (потом соединить по SST алгоритмом Прима).<br><br>Может у кого-нибуть есть исходник, буду признателен.... ]]></description>
        <author>tserega</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	