GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.7 (9)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Интеллект = моделирование.
Mad_God
Сообщений: 545
На: Интеллект = моделирование.
Добавлено: 06 фев 11 18:35
!
Но главное - не делаем высокотехнологичной графической составляющей. Используем бесконечный лист, который можно сдвинуть вправо-влево-вверх-вниз относительно центра, векторную графику, записываемую в память и файлы, используем БД для хранения объектов, свойств и связей, установленных взаимодействующих систем.
И всё это в открытом (возможно кроссплатформенном виде) на Python.

Даже те самые страницы форума было бы удобно хранить в виде графа. Открывали страницу - значит она закеширована. Открывали месяц назад, неделю или вчера - значит она уже на вашей стороне. А такую информацию - почему бы и не хранить? Помните, какие темы вы открывали раньше? Вот вам карта.
К пространственному расположению тем легко привыкнуть. Открываете узел - там граф сообщений. Прочитали - свернули. Не надо щелкать по вкладкам, всё открыто на одном листе, только узлы свёрнуты.

Например, грузится страница. Видно, что на странице столько-то элементов (опера показывает). И что же я их не вижу на экране? Мне сразу надо видеть, какие новые темы появились, сколько сообщений, сколько просмотров, дерево тем и подтем. Зачем все эти квадратные блоки?
Подгрузили элемент - вывели на экран в положенную координату. Рядом - текст. 1 элемент загрузился - один элемент на экране, 100 загрузилось - сто на экране.
А если тот элемент на который я хочу нажать уже загрузился - зачем ждать больше??

Пишу сообщение - а на сервере уже появилось новое сообщение. Почему бы мне тоже его не увидеть? Почему мне нужно обновлять страницу? (наверное чтобы форум в чат не превращать, но иногда и это нужно, можно чат отправлять в dev/null, а самое интересное копировать в форум из истории.)

Но главное, категорически не хватает схем и динамических презентаций на стороне клиента.
Нужен клиент и обмен файлами схем.
Точно также можно использовать клиент для визуализации форума и хранения просмотренных сообщений в удобном виде а не в том, в каком их преподносят rss-читалки.


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

Запущеная программа не должна прыгать в панель задач, она должна показываться по наведению на иконку - это ведь её иконка. Подсвечиваться, мелькать, пульсировать, быть больше, вращаться вокруг родителя.

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

Вобщем, дофига чего можно придумать, а главное, хорошему программисту - раз плюнуть.
[Ответ][Цитата]
NewPoisk
Сообщений: 3745
ликбез
Добавлено: 07 фев 11 15:06
Однако, это становится забавным. Похоже на сеанс одновременной игры на нескольких шахматных досках.

2 Анатоль

>Если разрешить алгоритму записать что-то в память, и разрешить ему использовать это при следующем запуске, то очень легко написать алгоритм генератора случайных чисел, который бы при каждом запуске выдавал случайное число.
Думаю Вы и сами легко напишите сотню таких алгоритмов в день.
Ну, а если Вы скажете, что не можете этого сделать, то я тогда покажу как это сделать.

Да, не могу. Показывайте!

2 shuklin

>пример для самообразования: регистр R микропроцессора Z80

Регистр R - регенерации памяти. Он является простым счетчиком, который увеличивается каждый раз при выполнении цикла регенерации. 3начение в регистре циклически изменяется от 0 до 255.

Зачем нужна регенерация памяти?

/Я думаю для вашей партии будет вполне достаточно пары-тройки вопросов. /

2 Роджер Веселый

>Здесь два варианта либо вы полный дурак, либо вы просто не понимаете что такое алгоритм.

Скорее первое. Иначе просто не вел бы тут с вами бесед.

>Вы знакомы с понятием Randomize(Time)?
>Понимаете ли вы что такое последовательность?
>Понимаете ли вы что такое случайность?
>Понимаете ли вы что такое число?

Вам надо было еще один вопрос для победного потрясания кулака (задавая очередной вопрос, загибать пальцы):
>Понимаете ли вы что вы круглый дурак?

Да Круглей некуда.

Как дурак дураку: почему работающий по алгоритму компьютер может генерировать случайную последовательность, если в википедии написано что алгоритм - это точный набор инструкций?

2 Mad_God

>Я, например, давно хочу сделать программу, которая поможет в создании ИИ, которая позволит моделировать жизненные ситуации, передвижения людей, вещей, информации, смену решений, человеческий выбор, и так, далее.

Комбинаторный взрыв своими руками.

2 Capt.Drew

Я вот чего подумал... Вам надо аватару по примеру переливающихся календариков. И многоликость сразу будет видно (а то сиди и гадай сколько же ников), и дань ностальгии будет удовлетворена.
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: ликбез
Добавлено: 07 фев 11 15:50
Цитата:
Автор: NewPoisk

>пример для самообразования: регистр R микропроцессора Z80

Регистр R - регенерации памяти. Он является простым счетчиком, который увеличивается каждый раз при выполнении цикла регенерации. 3начение в регистре циклически изменяется от 0 до 255.

Как дурак дураку: почему работающий по алгоритму компьютер может генерировать случайную последовательность, если в википедии написано что алгоритм - это точный набор инструкций?



регистр R работает по четкому алгоритму:
R = R + 1

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

на основе этого регистра в ZX была интересная защита участков кода от отладки.
Если некоторый участок кода не взаимодействует с внешним миром, то при заданных входных данных значение этого регистра детерминированно. Отладчик - внешний мир. Он нарушает изоляцию кода. Пытаетесь понять алгоритм, начинаете отлаживать, вмешиваетесь в систему, детерминированность исчезает, алгоритм рушится. Эти участки делали самомодифицирующимися с шифрованием на основе ключа со значением из регистра R. Поэтому без отладки понять алгоритм еще более невозможно

детерминированность регистра R сохраняется только на "закрытых" от внешнего мира участках. Или на участках алгоритма, которые не содержит условных операторов или циклов. Там же в ZX часто применяли технику линейного программирования, в которой алгоритмы с условными операторами реализовывали без операторов условного перехода - одним длинным линейным потоком комманд. Кроме других фишек это помогало сохранять значение регистра R предсказуемым.

Цитата:
Автор: NewPoisk
Зачем нужна регенерация памяти?


Во времена ZX RAMпамять без регенерации не умела помнить долго. Если без регенерации сохранили число в ячейку памяти, то что считаете - неизвестно. Впрочем, сегодня спецификации на память в виртуальных машинах для распределенных систем детерминизмом тоже не радуют

[Ответ][Цитата]
NO.
Сообщений: 10700
На: ликбез
Добавлено: 07 фев 11 16:49
У нас был класс компьютеров MSX, игровые, там были спрайты, звук, страничная память задолго до PC. Когда преподаватель заглядывал мы компьютеры выключали. Потом секунд через 5 включить и там игрушка, правда она перезапускалась, видимо в процессоре регистр IP обнулялся, а память как-то всё сохраняла. И в тот же день на лекции нам могли рассказывать про регенерацию Yamaha MSX-2, их много было, год примерно 90. Какая там была память не знаю, только недавно нашел про них книгу, по-японски.
[Ответ][Цитата]
Анатоль
Сообщений: 1964
На: ликбез
Добавлено: 07 фев 11 17:07
Цитата:
Автор: NewPoisk
Да, не могу. Показывайте!

//При каждом запуске алгоритм должен выдавать случайное число (например от 0 до 99).

uint64 m; //это будет статическая память, не разрушаемая при окончании работы алгоритма.
Button1Click(sender) //алгоритм запускается при нажатии кнопки
{
int t=(сумма цифр числа m)+3:
m = t^17; //t умножить на себя несколько раз (17)
Label1.Text = (m % 100); //остаток от деления m на 100
}

Ну вот, клацаете кнопку, в метке получаете случайное число от 0 до 99.
Алгоритм не идеален. Может зациклится, хоть это и маловероятно (когда сумма цифр числа м плюс 3 в степени 17 окажется равна м).
Но его можно усовершенствовать.
Например выделить две ячейки статичной памяти, и хранить в одной из них (м1) пред-предыдущий результат.
Если вдруг сумма цифр м и м1 совпадут, то изменить значение в м (например прибавить 1)
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: ликбез
Добавлено: 07 фев 11 17:15
В совковых клонах spectrum-a ставили память серии К565
У меня РК86 был до спектрума. В РК регенерацией занималось DMA совместно с видео. Видео погасишь, через несколько секунд вся память случайной байдой забита. Поэтому если нада гасить видео, надо программно ОЗУ рефрешить. Делать счетчик и бегать по памяти. В спектруме проще, там тоже видео за регенерацию в ответе, но в отличие от РК видео программно отключать нельзя, поэтому на регенерацию не попадешь. Дешевая память - она на ёмкостях. Сколько ёмкость хранит заряд - столько RAM хранит данные.
[Ответ][Цитата]
NewPoisk
Сообщений: 3745
На: ликбез
Добавлено: 08 фев 11 10:43
Напомню задачу: запрограммируйте чисто алгоритмический датчик случайных чисел, чтобы при каждом новом запуске он выдавал новую случайную последовательность.

Чисто алгоритмический - значит при одних и тех же входных данных он должен выдавать разные выходные (поскольку в противном случае датчик будет уже не чисто алгоритмическим, как использующий внешний источник случайности).

2 shuklin

>регистр R работает по четкому алгоритму:
R = R + 1
и тем не менее в программе, работающей с асинхронными внешними устройствами его значение случайно.

Внешний источник случайности.

2 Анатоль

>uint64 m; //это будет статическая память, не разрушаемая при окончании работы алгоритма.
Button1Click(sender) //алгоритм запускается при нажатии кнопки
{
int t=(сумма цифр числа m)+3:
m = t^17; //t умножить на себя несколько раз (17)
Label1.Text = (m % 100); //остаток от деления m на 100
}

Получилась рекурсивная функция m=f(m). Ну и где тут случайность?

>Ну вот, клацаете кнопку, в метке получаете случайное число от 0 до 99.

У вас просто съезжает разрядность, вот и все. При бесконечно большой точности вычислений (а равно и при чисто алгоритмическом округлении, без аппаратных сбоев) значение m отнюдь не будет случайным.
[Ответ][Цитата]
Анатоль
Сообщений: 1964
На: ликбез
Добавлено: 08 фев 11 11:01
m вообще всегда точно целое число (не наблюдаемое нами).
Случайные числа (от 0 до 99) алгоритм выдает в метку.
Случайные они в том смысле, что зная предыдущее (предыдущие) Вы не сможете предсказать последующее. Даже зная алгоритм!
По той простой причине, что в метку выводится две последних цифры числа м, а следующее число, выдаваемое алгоритмом (в метку) зависит от всего числа м.
[Ответ][Цитата]
новичок
Сообщений: 103
На: ликбез
Добавлено: 08 фев 11 12:41
Модель отличает от алгоритма наличие данных и программ в одном флаконе. Модель можно использовать в качестве генератора случайных чисел, рассматривая её как "внешний источник случайности".
[Ответ][Цитата]
NewPoisk
Сообщений: 3745
На: ликбез
Добавлено: 08 фев 11 13:59
Цитата:
Автор: Анатоль
Случайные они в том смысле, что зная предыдущее (предыдущие) Вы не сможете предсказать последующее.


Проверяем

Итак, алгоритм:

int t=(сумма цифр числа m)+3:
m = t^17; //t умножить на себя несколько раз (17)
Label1.Text = (m % 100); //остаток от деления m на 100

Трассировка:
m=123
t=(1+2+3)+3=9
m=9^17=16677181699666600
(m % 100)=0

Ответ:
при m=123 получаем следующее значение m=0
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: ликбез
Добавлено: 08 фев 11 15:00
Цитата:
Автор: NewPoisk

Напомню задачу: запрограммируйте чисто алгоритмический датчик случайных чисел, чтобы при каждом новом запуске он выдавал новую случайную последовательность.

Чисто алгоритмический - значит при одних и тех же входных данных он должен выдавать разные выходные (поскольку в противном случае датчик будет уже не чисто алгоритмическим, как использующий внешний источник случайности).


И что это даст?

Тем более что на практике никогда не бывает без:

Цитата:
Автор: NewPoisk

Внешний источник случайности.



Вы поняли мой пример про регистр R? Приходится применять специальные медоды программирования, без применения условных переходов if then чтобы обеспечить детерминированность этого регистра. Случайность - проблема, она везде и ее больше чем нужно. Сам регистр нужен чтобы избежать случайного забывания данных в RAM. ИИ чтобы быть полезным должен быть детерминированным, а не случайным!

[Ответ][Цитата]
Анатоль
Сообщений: 1964
На: ликбез
Добавлено: 08 фев 11 15:03
Повторяю специально для НП.
м мы не знаем.
Оно нами не наблюдаемо.
Мы знаем, наблюдаем только то, что алгоритм выдает в метку.
А выдаёт он последние две цифры м. (т.е. остаток от деления м на 100).
По этому числу мы не можем предсказать следующее число, которое выдаст алгоритм (в метку).

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

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

Оно никогда (практически) не бывает одинаковым, так как содержит следы прошлого опыта и очень много состояний.

Этот простой алгоритм с памятью моделирует даную ситуацию.
Если алгоритм выдал нам число 23 , то мы не можем предсказать, что он выдаст следующим. Один раз выдаст одно, другой раз совсеи другое.

(Мы не наблюдаем его внутреннего состояния, его памяти прошлых событий, числа м)
А по наблюдаемым данным программа ведёт себя неалгоритмично.

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

[Ответ][Цитата]
NewPoisk
Сообщений: 3745
На: ликбез
Добавлено: 08 фев 11 15:27
2 shuklin

>И что это даст?

Прежде чем ответить, я хочу услышать ваш ответ:

>Тем более что на практике никогда не бывает без:

Алгоритм ("чистый", естественно) способен выдать случайную последовательность? Да/Нет.

2 Анатоль

>Мы знаем, наблюдаем только то, что алгоритм выдает в метку.
А выдаёт он последние две цифры м. (т.е. остаток от деления м на 100).
По этому числу мы не можем предсказать следующее число, которое выдаст алгоритм (в метку).

И поэтому не можем. Ок. Продолжим самокопание:

В предыдущем примере у нас m1=123, получили m2=0. Вы утверждаете что "по этому числу мы не можем предсказать следующее число".

Итак, алгоритм:

int t=(сумма цифр числа m)+3:
m = t^17; //t умножить на себя несколько раз (17)
Label1.Text = (m % 100); //остаток от деления m на 100

Трассировка:
m=0
t=(0)+3=3
m=9^17=129140163
(m % 100)=63

Ответ:
при m2=0 получаем следующее значение m3=63
[Ответ][Цитата]
Анатоль
Сообщений: 1964
На: ликбез
Добавлено: 08 фев 11 16:00
NP, Вы прикалываетесь? У Вас сегодня настроение лирическое?
Если на выходе алгоритма (в метке) 0, то
м может быть 238749665400
а может быть 7369999872548876900
И какое следующее число выдаст алгоритм (в метку), если мы знаем только, что перед этим он выдал 0 ?
Этого Вы не скажете, не зная м.
А м Вы не знаете, потому что это ненаблюдаемое внутреннее состояние.
Вы можете видеть только то, что выдает алгоритм (в метку).
И только на основании этого строить прогноз.
Т.е. Вы, зная алгоритм, можете пробовать подставлять в него на место м какое-то число, у которого Вам известно лишь две последние цифры.
Но позволит ли это Вам предсказать следующее число, которое выдаст алгоритм (в метку).
Нет.
Даже зная алгоритм, и зная предыдущее поведение системы (то, что выводилось в метку), но не зная ее внутреннего состояния, Вы не можете предсказать ее последующее поведение (что следующее выведет в метку).
Хотя оно и строго алгоритмично.


[Ответ][Цитата]
NewPoisk
Сообщений: 3745
На: ликбез
Добавлено: 08 фев 11 16:18
2 Анатоль

>Если на выходе алгоритма (в метке) 0, то м может быть 238749665400 а может быть 7369999872548876900

Итак, алгоритм:

int t=(сумма цифр числа m)+3:
m = t^17; //t умножить на себя несколько раз (17)
Label1.Text = (m % 100); //остаток от деления m на 100

Трассировка:
m=0
t=(0)+3=3
m=9^17=129140163
(m % 100)=63

Объясните, пожалуйста, на каком шаге возникает значение отличное от 63 (238749665400 или 7369999872548876900 или ...)
[Ответ][Цитата]
 Стр.7 (9)1  ...  3  4  5  6  [7]  8  9<< < Пред. | След. > >>