Home

Death is my deliverance from this damnation called life

Свежие записи
Name
thy_doom

Navigation

Май, 23, 2008

Соревнования

в избранное рассказать другу
-

1 место в 82.5 :)
Метки:

Май, 19, 2008

Satyricon i Moskva

в избранное рассказать другу
Den episka bumpen.

Май, 15, 2008

в избранное рассказать другу
Hej alla!

Jag skriver inte i det blog nu, så jag tänker det är ganska ful.

Från nu ska skriva jag... kanske.

Hej då vänner (någon?), till nästa underbara gången.

Июль, 31, 2007

Музыка

в избранное рассказать другу
Новый Кинг Даймонд огорчил. Хотя когда вышла промка, народ и орал о возрождении Абигейл, этого не произошло. По субъективным ощущения альбом хуже Puppet Master'а 2003 года. В этом-же из запоминующихся моментов лишь 'Time is never ever standing still...' да 'Picures in Red.. Father is goind insaaayaayaane!'. Энди ЛяРок зажёг слабо, зачем-то на передним план поставили лесопилку, а знаменитые ЛяРоковские соло умируют, еле начавшись. Сам Кинг не сыграл ни одного соло, хотя в предыдущих брал в руки гитару. В общем не очень, но лучше чем Абигейл 2 и Хаус оф гад.

А вот второй опус Circus Maximus порадовал. Конечно отдаёт Pagan's Mind, Vanden Plas, но, тем не менее, один из лучших европрог опусов года.

Июнь, 19, 2007

Kamelot в Точке 18 июня

в избранное рассказать другу
18 июня посетили Москву, чем я и воспользовался.

Билеты взял с рук, вышло даже дешевле чем в кассе. Концерт состоялся в Точке, до этого я ни разу там не был, и, честно говоря, клуб отнюдь не свинарник, как его хаят, да и звуком был приятно удивлён.

Публика на концерт пришла довольно приличная, поэтому никакого слема *(. На кеннибал корп отыграемсо!

Разогревали Арида Вортекс. Группа настолько в доску своя для публики, что было похоже на концерт друзей на кухне :). По поводу музыки - говноповер. Ничего интересного.

И наконце сами Камелот. На сцену выскочил Кейси Грилло, стал примеряться к барабанам, пофоткал публику с мыльницы, вынес макбук. Сегодня пытался найти его блог, на майспейсе пусто :(. Сетлиста не помню, но это были лучшие их вещи. Лично я подпевал на Abandoned, Memento Mori, Forever, March of Mephisto, Center of the Universe. После Abondoned в зале устроили нехуёвые овации продаложавшиеся минуты 2, Хан схватился за сердце, пообещал вернуться.

Надо сказать мне повезло, ибо я очутился у самой сцены, около изгиба на который периодически выходили все члены группы, так что мне выдалась возможность находиться в 20-30 сантиметрах от звёзд xD. Больше тот, мне удалось всем им пожать руки, так что моя труаура теперь более тру xD.

Зал закипел на Forever. Потом ещё 2 энкора и всё... Последней была Ghost Opera где беквокалистка исполнила партию скрипки.

В плане звука всё было хорошо, почти отлично. Несколько переборщили с низами, но той каши что была на хаммерсаунде не наблюдалось. Зачот.
Метки: , ,

Июнь, 16, 2007

Музыка

в избранное рассказать другу
Неожиданностью дял меня стало известие о том что Чарли Доминичи, второй вокалист Dream Theater таки забросил свою манагерскую карьеру и вернулся в миру музыки.

Впервые выступив с товрищами из DT в 2005 на именинах альбома WDaDU, Чарли вспомнил былое и запсиал сольник. Мало того, концептуальный, в трёх частях. В концепцию не въезжал, ибо она про бравого американского секретного двойного агента в тылу таллибов, в общем бред.

Первая часть трилогии вышла в 2005 году, и представляла из себя сборник песен под гитару, аля русские барды. Не знаю как его слушать, чтоыб прослушать до конца, но первый блин комом, даже таким нехуёвым комищем вышел.

В этом году вышла вторая часть трилогии, и, слава ктулху, именно такая какой и должна была быть. Таким должен был быть новый DT. Конечно, новог ов себе альбом несёт мало, если вообще несёт, но исполнено на высочайшем уровне, за мсключением... вокала.

Доминичи не использовал свои связки в теченеи 10+ лет, что заметно. Прежнего An Angel's Kiss... Now Falling... который крутился в голове после прослушивания ждать не стоит. Будем надеяться что у Чарли голосок как-нибудь самоналадится.

Новый альбом японцев Sigh удивил. В 2005 году они выпустили замечательный авангардный не-блековый альбом, который наверное будет самым слушаемым азиатским альбомом для меня, а в этом вернулись к корням, к чернухе.

На этот раз это сверхбрутальный, сверхинтенсивный, сверхсимфоничный, частичнопрограссинвый, но всё-же традиционный блек. По мне, уж лучше бы развивались в духе альбома 2005 года.
Метки: , ,

Май, 13, 2007

Dream Theater - Systematic Chaos

в избранное рассказать другу
Пираты упёрли новый альбом раньше на месяц, чем я и воспользовался. Вообще DT - одна из моих самых любимых групп, наравне с Opeth, Death, Ayreon и Nevermore.

Итак, прослушал альбом уже раз 20, воэтому впечатление от него достаточно устойчивое. Альбом нельзя сравнивать с другими. Он мрачнее.

Когда вышел сингл Constant Motion я уж было подумал что DT взяли курс на металлику, и в чём-то я был прав. Весь альбом выдержан примерно в одном эмоциональном стиле с Constant Motion - он жёсткий, агрессивный.

Первая часть In the Presence of Enemies — напоминает Liquid Tension, дальше музыка переходит какую-то скорбную черту, которая частично отступает на Prophets of War, но затем снова появляется.

Я не случайно делаю акцент на думности альбома. Дело в том, что слушаеть его тяжело. Это ни плохо ни хорошо.

Апрель, 19, 2007

Музыка

в избранное рассказать другу
На прошло недели вышли сразу 2 замечательных прогрессивных альбома:

  • Devin Townsend - Ziltoid The Omniscient

    Концептуальный альбом, повсествующий о том как на Землю напал Зилтойд, потребовал лучшее кофе. Через 5 минут, он получил чашку, ему не понраилось, и он обратился с войной на землю. Что-то вроде Автостопом по галактике :). В конце оказывается что это сони работника заведения общепита, тогующего кофе.

  • Porcupine Tree - Fear of Blank Planet

    Гораздо депрессивнее предыдущего альбома. не знаю что случилось такого у Стива Виллсона, но музыка всё больше и больше напоминает Opeth (по настроению). очень зацепил трек anesthetize. Слышны нотки Meshuggah, а в середине песни мне показалось что я слушаю какое-то рубилово вроде саффокейшен. Второй Radioactive toy.

Март, 25, 2007

в избранное рассказать другу
Паренёк посередине почти правит миром. А кто бы мог подумать!

Март, 2, 2007

Ядерная война

в избранное рассказать другу
http://www.youtube.com/watch?v=4nMGgXmVCug

Февраль, 27, 2007

Как нармальные пацаны с района пишут код

в избранное рассказать другу
Сегодня прочитал у Джеффа Этвуда, что 199 из 200 людей имеющих Graduate по Computer Science не могу писать код. Он привёл простой прмиер: эти люди не могу написать простую прогу:

Для всех чисел от 0 до 100: вывести на экран Buzz если число делится на 3, Fizz - если на 5, и BuzzFizz если на 15. Во всех остальных случаях вывести само число.

Я немного охуел когда это прочитал. Неужели у них в штатах и правда настолько плохо с мозгами? Охуели и остальные читатели его блог, заспамили его комментами, после чего блог слёг. :(

Но я успел вытащить из комментов аццкую абасцаку.


Чел хорошо постебался:

public abstract class Factory
{
public string ToString(char[] chars)
{
return new string(chars);
}
}

public class FizzFactory : Factory
{
private const char F = 'F';
private const char i = 'i';
private const char z = 'z';

public bool isFizz(int input)
{
if (input == 3) return true;
else if (input == 6) return true;
else if (input == 9) return true;
else if (input == 12) return true;
else if (input == 15) return true;
else if (input == 1 return true;
else if (input == 21) return true;
else if (input == 24) return true;
else if (input == 2 return true;
else if (input == 30) return true;
else if (input == 33) return true;
else if (input == 36) return true;
else if (input == 39) return true;
else if (input == 42) return true;
else if (input == 45) return true;
else if (input == 4 return true;
else if (input == 51) return true;
else if (input == 54) return true;
else if (input == 57) return true;
else if (input == 60) return true;
else if (input == 63) return true;
else if (input == 66) return true;
else if (input == 69) return true;
else if (input == 72) return true;
else if (input == 75) return true;
else if (input == 7 return true;
else if (input == 81) return true;
else if (input == 84) return true;
else if (input == 87) return true;
else if (input == 90) return true;
else if (input == 93) return true;
else if (input == 96) return true;
else if (input == 99) return true;
else return false;
}

public string GetFizz()
{
return base.ToString(new char[4] { F, i, z, z });
}
}

public class BuzzFactory : Factory
{
private const char B = 'B';
private const char u = 'u';
private const char z = 'z';

public bool isBuzz(int input)
{
if (input == 5) return true;
else if (input == 10) return true;
else if (input == 15) return true;
else if (input == 20) return true;
else if (input == 25) return true;
else if (input == 30) return true;
else if (input == 35) return true;
else if (input == 40) return true;
else if (input == 45) return true;
else if (input == 50) return true;
else if (input == 55) return true;
else if (input == 60) return true;
else if (input == 65) return true;
else if (input == 70) return true;
else if (input == 75) return true;
else if (input == 80) return true;
else if (input == 85) return true;
else if (input == 90) return true;
else if (input == 95) return true;
else if (input == 100) return true;
else return false;
}

public string GetBuzz()
{
return base.ToString(new char[4] { B, u, z, z });
}
}

public delegate void FizzBuzzWriter(string input);
public class Looper
{
private FizzFactory Fizz;
private BuzzFactory Buzz;
public event FizzBuzzWriter OnFizzBuzz;

public Looper(Factory fizzFact, Factory buzzFact)
{
Fizz = (FizzFactory) fizzFact;
Buzz = (BuzzFactory) buzzFact;
}

public void execute(int start, int finish)
{
for(int i = start; i<=finish; i++)
{
string val = String.Empty;
if (Fizz.isFizz) val += Fizz.GetFizz();
if (Buzz.isBuzz) val += Buzz.GetBuzz();
if (val == String.Empty) val = i.ToString();

if (OnFizzBuzz != null) OnFizzBuzz(val);
}
}

}

public class TheFizzBuzzProgram
{
public static void main(string[] args)
{
Looper l = new Looper(new FizzFactory(), new BuzzFactory());
l.OnFizzBuzz += new FizzBuzzWriter(l_OnFizzBuzz);
l.execute(1,100);
}

static void l_OnFizzBuzz(string input)
{
Console.Write(input + Environment.NewLine);
}
}

Февраль, 24, 2007

Microsoft XNA Game Studio

в избранное рассказать другу
Сегодня немного повозился с Microsoft XNA Game Studio. Оно рулит!

Предыстория: решили майкрософт создать фреймворк специально для создания казуальных игрушек. И создали. Почему казуальных: фреймворк сей - надстройка на Managed Direct X(графическая его часть), но заточенно оно специально под игрушки: т.е. присутсвуют нативные классы для геймпадов и т.д. А теперь самое главное: оно позволяет создавать игрушки на 360 бокс, дебаггить их через комп. Короче домашний дев-кит. Sony пытались сделать что-то подобное: они просто добавили  возможность установки никсов на свою консоль. Но облажались. Во первых, из никсов нет прямого доступа к железке, а разрешение ограниченно 480p, во вторых они не создали никаких инструментов для девелоперов.

Короче говоря за тридцать с небольшим минут у меня вышел меганавороченный симулятор чёрного шарика на голубом фоне ;)

Это вместе со скачиванием документации, фреймворка и visual C# express (с полной студией оно не работает). Я написал не более 50(!) строк кода.

Это, я вам скажу, настоящий RAD. И ещё один плюс в копилку майкрософт. И наверное начало моего путеществия в самопальный гейм-дев :D.

Февраль, 17, 2007

Музыка

в избранное рассказать другу
Это наверное самая прогрессивная неделя за год. Целую неделю слушаю исключительно Threshold, Pagan's Mind, Dream Theater, Neal Morse и ещё кучку малоизвестных прог-исполнителей.

Neal_Morse-Sola_Scriptura-Promo-CD-2007-QTXMp3
Вот это шедевр с большой буквы Ш! До этого аотбома я что-то игнорировал Нила Морзе, но теперь... Этот релиз - лучшее что я слышал после Ayreon - The Human Equation. Правда тексты тут исключительно на христианско-библейскую тему. Никакой тебе фантастики ;).

Threshold-Dead_Reckoning-Promo-CD-2007-QTXMp3
Тоже порадовали. Мызыка не блещет мегасложностью, но цепляет. Такой прогрессив хард-рок я-бы сказал. Тоже классный релиз.

В остальные прог-новинки пока толком не втыкнул.
Метки: , ,

Февраль, 1, 2007

Rogue Galaxy

в избранное рассказать другу

Признаться, ждал игру больше чем FFXII. Один из последних стоящих проектов на PS2 порадовал больше FFXII, по крайней мере по первым впечатлениям.

Начинается игра с красивого cg ролика, где глав герой, Джеспер Роуг расхаживает на анимешном аналоге Татуина. Побазарив с батей, он бросается в бой с хрен-знает-откуда материлиазовашимися монстрами, наводнившими его вроде бы мирный городок. В лучших традициях Болливуда на помощь к Джесперу спешит мистический-дядя-в-сером-халате. Победив пару десятков монстрюков нам показывают сценку, где местный аналог Дройда-с-Татуина и Дядя-крысяя-морда-метр-с-кепкой обсуждают крутость мистического-дяди-в-сером-халате. Едва завидев дройда и крысеморда, дядя-в-халате дарует Джесперу Огроменный-Меч-с-Красными-полосками и космический фен, а сам скрывается в неизвестном направлении. И не по земле как обычные люди, а по крышам домов. Дройд-с-Татуина и Дядя-крысья-морда-метр-с-кепкой принимают Джеспера за Дядю-в-Халате и рекрутируют его в свою космическую бригаду пиратов. Джеспер покидает родные пинаты, но его останавливает батя и они вместе вспоминают дореволюционные годы. Оказывается, Джеспера подбросили, а в детстве он хотел в космос. Что он там забыл?

Покинув дом родной, Джеспер шастает по пустыне в поисках космического корабля, успешно находит его. И о чудо! Это не Татуин, это Дюна! Из песка выскакивает огромный змееподобный глист. Тут красивая экшн-сцена на 5 минут, в ходе которого Джеспера выручает Девка-с-Сиськами. Над последними старались, в cg ролике заметны колебания оных, а количество полигонов гораздо больше чем в in-game модели Джеспера, реалистично однако ;). Любят японцы такое ;).



На корабле Девка-с-Сиськами обнюхивает Джеспера, да и весь остальной экипаж удивляется что лже-Дядька-в-Халате такой молодой. И снова, в лучших традициях Болливуда, космический корабль терпит крушение и падает на планету-Джунгли. Видите-ли, масло закончилось.

Технически игра выглядит и бегает отлично: отсутствие подргузок, приятная cell-shading-овая графика, сюда даже fake-HRD приделали. Несмотря на идиотичность сюжета, он интересен. А самое главное - персонажи имеют харизму (в отличае от FFXII).
Метки: , , ,

Январь, 21, 2007

Бляди

в избранное рассказать другу

Январь, 20, 2007

Искусственный Интеллект. Часть 2: отжыгаем в тональности До Диез

в избранное рассказать другу
Иллюстрацией метода. будет N-Queens Problem


The eight queens puzzle is the problem of putting eight chess queens on an 8×8 chessboard such that none of them is able to capture any other using the standard chess queen's moves. The colour of the queens is meaningless in this puzzle, and any queen is assumed to be able to attack any other. Thus, a solution requires that no two queens share the same row, column, or diagonal. The eight queens puzzle is an example of the more general n queens puzzle of placing n queens on an n×n chessboard.

В каждой колонке может располагаться лишь 1 фигура. Это облегчает задачу и существенно облегчает кодировку данных. Положение королев определяет одномерный массив размера n, каждый элемент которого может принимать значения от 1 до n. При этом все значения элементов массива уникальны, то есть сам массив размером n содержит n-1 натуральных чисел и 0 (так как код в сишарп, а первый элемент массива в языках семейства си имеет нулевой индекс).

memberType - класс представляющий положение королев на доске. Функция TweakSolution - та самая хрень, случайным образом расставляющая королев на доске.
class memberType
    {
        public int[] solution = new int[Program.MaxLength];
        public float energy;
       
        // Меняем положение коней из двух случаных столбцов местами.     
        public void TweakSolution()
        {
            int temp, x, y;
            Random rnd = new Random();

            x = rnd.Next(Program.MaxLength);

            do
            {
                y = rnd.Next(Program.MaxLength);
            }
            while (x == y);

            temp = this.solution[x];
            this.solution[x] = solution[y];
            this.solution[y] = temp;
        }
Конструктор заполняет главную диагональ, а затем случайным образом перемешивает королев.
       public memberType()
        {
            for (int i = 0; i < Program.MaxLength; i++)
            {
                solution[i] = i;
            }

            for (int i = 0; i < Program.MaxLength; i++)
            {
                TweakSolution();
            }
        }
Дальше - больше :D. Энергия решения считается как количество конфликтов между королевами.
        public void ComputeEnergy()
        {
            int i, j, x, y, tempx, tempy, conflicts;
            char [,]board = new char[Program.MaxLength,Program.MaxLength];

            int[] dx = { -1, 1, -1, 1 };
            int[] dy = { -1, 1, 1, -1 };

            for (i = 0; i < Program.MaxLength; i++)
            {
                board[i,solution[i]] = 'Q';
            }

            conflicts = 0;

            for ( i = 0; i < Program.MaxLength; i++)
            {
                x = i;
                y = solution[i];

                for ( j = 0; j < 4; j++)
                {
                    tempx = x; tempy = y;
                    while (true)
                    {
                        tempx += dx[j];
                        tempy += dy[j];
                        if ((tempx < 0) || (tempx >= Program.MaxLength) || (tempy < 0) || (tempy >= Program.MaxLength))
                            break;
                        if (board[tempx,tempy] == 'Q') conflicts++;
                    }
                }

            }
            energy = (float)conflicts;
        }
И последняя функция в классе решения просто выводит на экран оное.
        public void emit()
        {
            int MaxLength = Program.MaxLength;
            char[,] board = new char[MaxLength, MaxLength];
            int x, y;

            for (x = 0; x < MaxLength; x++)
            {
                board[x, this.solution[x]] = 'Q';
            }

            for (y = 0; y < MaxLength; y++)
            {
                for (x = 0; x < MaxLength; x++)
                {
                    if (board[x, y] != 'Q')
                        Console.Write(". ");
                    else
                        Console.Write("Q ");
                }
                Console.Write('\n');
            }
            Console.Write('\n');
        }

    }
Теперь кульминация балета :D.
    class Program
    {
        public static int MaxLength = 20; \\ размер доски
        public static float InitialTemperature = 30.0f; \\ начальная температура
        public static float FinalTemperature = 0.5f; \\ конечная температура
        public static float Alpha = 0.99f; \\ во сколько раз уменьшается температура
        public static int StepsPerChange = 100; \\ число итераций для каждого значения температуры
    

        static void Main(string[] args)
        {
            int timer = 0, step, solution = 0, useNew, accepted;
            float temperature = InitialTemperature;
            memberType current, working, best;

            StreamWriter Strw = new StreamWriter("strw");
            Random rnd = new Random();

            current = new memberType();
            current.ComputeEnergy();
            best = new memberType();

            best.energy = 100.0f;

            working = current;
До тех пор пока температура больше конечной выполняется алгоритм Metropolis Monte Carlo.
  • Если рабочее решение лучше данного (то есть энергия рабочего меньше) то он становится данным.
  • Если же нет, то вычисляется вероятность принятия решения. Вероятность сравнивается со случайной величиной, меньше единицы, и если вероятность принятия рабочего решения больше случайной величины, то рабочее решение копируется в данное. В обратном случае соответсвенно данное копируется в рабочее.
С каждым шагом главного цикла температура уменьшается по закону
T=Alpha*T
И в файл выводятся значения температуры, энергий и шага итерации.
            while (temperature > FinalTemperature)
            {
                Console.WriteLine("Temperature: " + temperature);

                accepted = 0;

                for (step = 0; step < StepsPerChange; step++)
                {
                    useNew = 0;
                    working.TweakSolution();
                    working.ComputeEnergy();

                    if (working.energy <= current.energy)
                    {
                        useNew = 1;
                    }
                    else
                    {
                        float test = (float)rnd.NextDouble();
                        float delta = working.energy - current.energy;
                        float calc = (float)Math.Exp(-delta / temperature);

                        if (calc > test)
                        {
                            accepted++;
                            useNew = 1;
                        }
                    }

                    if (useNew == 1)
                    {
                        useNew = 0;
                        current = working;

                        if (current.energy < best.energy)
                        {
                            best = current;
                            solution = 1;

                        }
                        else
                        {
                            working = current;
                        }
                    }
                }
                Strw.WriteLine("timer:" + timer++ + " Temperature:" + temperature +
                    " Best Energy: " + best.energy + " Accepted: " + accepted);

                temperature *= Alpha;
            }
В конце на экран выводится лучшее решение.
            Strw.Close();
            if (solution == 1)
                best.emit();

            return;
        }
    }
}
Метки: , ,

Январь, 15, 2007

Снова про Web 2.0

в избранное рассказать другу
С недавнего времени все посты я пишу в Google Docs (бывший Writely). Google Docs это:
  • Первый и лучший текстовый процессор, который работает в браузере.
  • Первый WebAPP массового использования написанный на C#/ASP.NET.

Что я люблю в Web 2.0, так это отсутвие необходимости ставить лишний софт. Не секрет, что 90% софта на глубоко-обожаемую всеми нами платформу Win32(64) - Malware. Пользователи Маков такой опции лишены. Это всё casual users. Всяких юниксойдов в расчёт не берём - это совсем другой контингент. *nix - платформа со своим собственным контингентом, и я сомневаюсь что никсы станую десктопными платформами. Да, есть пророчества насчёт доминирования Open Solaris в сегменте никсов в этом году. Да, некоторые знакомые переходят на Ubuntu. Но это люди искушённые, не домохозяйки и не бухгалтеры.

Более тго, понятие OS уже не так важно как раньше. Большинство корпоративного софта мультиплатформенно. Оставшийся-же прикладной софт становится Web 2.0. У меня на машине не установлен ни один офисный пакет, ни OpenOffice ни Microsoft Office. Его с успехом заменяет Google Docs. Графики чертит fooplot, уравнения решает calc5. Имею смелость предположить, что в ближайший год абсолютно все жизненно-важные софтины переедут в Web 2.0.

Мораль сей басни такова: мы живём в конце эпохи войн платформ. Windows Vista, с большой вероятностью может стать единственной версией Windows на лет 30. Софт становится независимым от платформы, а продавать новые оси за большие деньги становится не выгодно, ведь всё тоже самое можно получить бесплатно, или значительно дешевле. Microsoft это понимают, поэтому вводят дурацкие ограничения с DirectX 10, WPF, etc.

Метки: , ,

Январь, 13, 2007

в избранное рассказать другу
++i--; \\ операция подёгивания

Искусственный Интеллект. Часть 1: отжыгаем

в избранное рассказать другу
Сейчас я открываю для себя новое направление в IT: слабый искусственный интеллект. Искусственный интеллект условно делится на 2 ветви: сильный и слабый.

Сильный Искусственный Интеллект


Сильный ИИ ставит своей задачей научить машину думать подобно человеку. Эта ветвь наиболее романтичная и, увы, наиболее тупиковая. Я, к сожалению, не люблю читать не-техническую литературу, поэтому кроме 3х законов роботехники ничего не знаю :).

1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.
2. A robot must obey orders given it by human beings except where such orders would conflict with the First Law.
3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.

Роботы — это прекрасно. Да чего скрывать, в детсве я хотел стать роботом :), помните утиного робокопа на колёсике из мультика Чёрный Плащ? Так вот, это мой кумир ;).

 

Но моя непоколебимая вера в возможность существования машины наделённой сознанием была разрушена после прочтения книжки "Новый ум короля: о компьютерах, мышлении и законах физики" за авторством американского физика Роджера Пенроуза.
Монография известного физика и математика Роджера Пенроуза посвящена изучению проблемы искусственного интеллекта на основе всестороннего анализа достижений современных наук. Возможно ли моделирование разума? Чтобы найти ответ на этот вопрос, Пенроуз обсуждает широчайший круг явлений: алгоритмизацию математического мышления, машины Тьюринга, теорию сложности, теорему Геделя, телепортацию материи, парадоксы квантовой физики, энтропию, рождение Вселенной, черные дыры, строение мозга и многое другое. Монография известного физика и математика Роджера Пенроуза посвящена изучению проблемы искусственного интеллекта на основе всестороннего анализа достижений современных наук. Возможно ли моделирование разума? Чтобы найти ответ на этот вопрос, Пенроуз обсуждает широчайший круг явлений: алгоритмизацию математического мышления, машины Тьюринга, теорию сложности, теорему Геделя, телепортацию материи, парадоксы квантовой физики, энтропию, рождение Вселенной, черные дыры, строение мозга и многое другое.
Это одна из тех книг, которые я бы взял на Марс. Я преклоняюсь перед Пенроузом, он осветил огромный круг проблем в небольшой книге, изложив их простым языком. Эта черта присуща талантливым и гениальным людям: просто излагать сложные вещи. Суть-же книги в том, что разум - есть очень сложная штука, не понятно как он утроен и как он рабоатет. И уж точно ясно что алгоритмизировать его нельзя. Поэтому забудьте о разумных холодильниках и микроволновках. Со стиральными машинами-же ситуация замечательна: уже сегодня они умеют общаться с тётьками и дядьками из телевизора на человеческом языке. Жаль что готовить не умают, получились бы отличными жёнами %).

Слабый Искуственный Интеллект

Слабый ИИ - это разнообразыне методы, с первого взгляда имеющие некоторую разумность. Они не универсальны: каждый из них имеет свою облать применения. Будь то распознавание речи, поиск оптимального пути или система рейтингов с last.fm.

Лучший способ хорошо разобраться в проблеме: написать о ней статью :).

Simulated Annealing

Симуляция отжига, метод основанный на законах термодинамики. Отжиг - это процесс нагревания и контролируемом охлаждения вещества. Цель процесса - получение более стойкой кристаллической структуры, так как при неконтроллируемом охлаждении результат непредсказуем и неоптимален.

Метод заключается во "встряске", когда при высоких температурах в системе наблюдается высокая молекулярная активность. Цель - найти молекулу с минимальной энергией, но при выскоих темпреатурах таких молекул будет наблюдаться множество. Конечная цель прожига: уменьшая температуру найти единственную молекулу с минмиальной температурой.

Схематически алгоритм можно представить так:
Данное решение «» Рабочее решение » Лучшее решение
  1. Создаётся случайное решение, которое становится "Данное решение"
    Решение - просто некоторый объект с определёнными полями.
  2. Обращаемся к "Данному решению", вычисляем его энергию.
  3. "Данное решение" копируется в "Рабочее решение" и случайным образом модифицируется.
  4. Теперь у нас 2 решения: "Рабочее" и "Данное". У каждого есть энергия или сила решения. Чем меньше энергия, тем лучше решение. В идеале энергия решения должна стремиться к нулю.

    Если у "Рабочего" решения температура меньше, то оно копируется в "Данное".

    Если же нет, то вычисляется вероятность принятия решения, чтобы узнать что делать с "Рабочим решением". Вероятность определяется по формуле:
    P(beta*E)=exp(-beta*E/T)
    При высоких температурах плохие решения принимаются чаще, чем отклоняются. При уменьшении температуры, уменьшается вероятность принятия плохих решений.


    По оси z - вероятность принятия решения, x - энергия, y - температура.

После некоторого числа повторений температура уменьшается на небольшую велечину по какому-то закону (линейно, логарифмически, и т.д.).

Вся эта хрень повторяется пока температура не достигнет нуля.

Конец первой серии :).

Метки: , ,
Разработано LiveJournal.com