<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mihalytch personal blog &#187; алгоритм</title>
	<atom:link href="http://mihalytch.org.ua/tag/algoritm/feed" rel="self" type="application/rss+xml" />
	<link>http://mihalytch.org.ua</link>
	<description>Все о высоких технологиях</description>
	<lastBuildDate>Mon, 05 Dec 2011 16:05:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Алгоритм P: Перемешивание массива</title>
		<link>http://mihalytch.org.ua/programming/php/algoritm-p-peremeshivanie-massiva.html</link>
		<comments>http://mihalytch.org.ua/programming/php/algoritm-p-peremeshivanie-massiva.html#comments</comments>
		<pubDate>Sun, 17 Apr 2011 19:45:02 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[алгоритм]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=348</guid>
		<description><![CDATA[Приветствую друзья. Сегодня речь пойдет о перемешивании одномерно массива. Будем пользоваться Алгоритмом P, описанным Дональдом Кнутом (Искусство программирования. Том 2, [...]]]></description>
			<content:encoded><![CDATA[<p>Приветствую друзья.</p>
<p>Сегодня речь пойдет о <strong>перемешивании одномерно массива</strong>. Будем пользоваться Алгоритмом P, описанным Дональдом Кнутом (Искусство программирования. Том 2, с.163).</p>
<p>Для начала процитируем описание алгоритма.</p>
<p><strong>Алгоритм P (Перемешивание)</strong>. Пусть X1, X2, &#8230;, Xt &#8211; множество t чисел для перемешивания.</p>
<p><strong>P1</strong>. &#8220;Инициализация&#8221;. Присвоить j &lt;- t.</p>
<p><strong>P2</strong>. &#8220;Генерация U&#8221;. Генерировать случайное число U, равномерно распределенное между 0 и 1.</p>
<p><strong>P3</strong>. &#8220;Замена&#8221;. Присвоить j &lt;- round(j*U) + 1, где round() &#8211; операция округления до целого числа. Заменим Xk &lt;-&gt; Xj.</p>
<p><strong>P4</strong>. &#8220;Уменьшение j&#8221;. Уменьшить j на 1. Если j&gt;1, возвратиться к шагу <strong>P2</strong>.</p>
<p><span id="more-348"></span><br />
А теперь перейдем к реализации данного алгоритма на PHP.</p>
<pre class="brush: php; title: ; notranslate">
# Приведем Алгоритм Р от Кнута в действие
function ShuffleP(&amp;$X) {
$N = count($X); // Кол-во элементов массива

# P1: Инициализация
$j = $N-1; // Индекс последнего элемента массива

do {
# P2: Генерация U, равномерно распределенного между 0 и j
$U = rand(0, $j);

# P3: Округлить U до целого и присвоить k. Переставить местами Xk &lt;-&gt;Xj
$k = round($U);

$tmp = $X[$k];
$X[$k] = $X[$j];
$X[$j] = $tmp;
unset($tmp);

# P4: Уменьшить j на 1. Если j&gt;0: вернуться к P2
$j--;
} while($j&gt;0);
}
</pre>
<p>Исходный код со скриптом для демонстрации работы функции можно скачать по ссылке <a href="http://mihalytch.org.ua/download/alg.shuffle.zip" >alg.shuffle.zip</a> .</p>
<p>Спасибо за внимание!</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/php/algoritm-p-peremeshivanie-massiva.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>3 черепахи</title>
		<link>http://mihalytch.org.ua/humor/3-tortila.html</link>
		<comments>http://mihalytch.org.ua/humor/3-tortila.html#comments</comments>
		<pubDate>Thu, 21 Feb 2008 11:44:50 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[Юмор]]></category>
		<category><![CDATA[алгоритм]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/news/5</guid>
		<description><![CDATA[Задача: Ползут три черепахи. Первая черепаха знает, что впереди никого, сзади две. Вторая &#8211; одна впереди, одна сзади. Третья &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Задача</strong>: Ползут три черепахи. Первая черепаха знает, что впереди никого, сзади две. Вторая &#8211; одна впереди, одна сзади. Третья &#8211; одна сзади, другая впереди.<br />
<strong>Вопрос</strong>: Как должны располагаться черепахи?<br />
<span id="more-5"></span><br />
Решение: Присвоим каждой черепахе уникальный ID. Создадим двумерный массив размерностью 3 на 3. Теперь воспользуемся волновым алгоритмом для поиска оптимального пути в двумерном лабиринте. (Описание данного алгоритма вы можете найти <noindex></noindex><a href="http://mihalytch.org.ua/go.php?url=algolist.manual.ru/games/wavealg.php" target="_blank" >здесь</a>).</p>
<p>Промоделировав задачу, можно сделать вывод &#8211; одна из черепах пи*дит&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/humor/3-tortila.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

