Представляю вашему вниманию интеллектуальную основу.
Инструкция по сборке проста как 2х2:
Качаем Сохраняем текст в файл mini.c
Компилируем "tcc mini.c"
И запускаем получившийся mini.exe
#include <stdio.h>
#include <string.h>
#include <limits.h>
#define FRAME_SIZE UCHAR_MAX
#define FRAMES_MAX UCHAR_MAX
typedef unsigned char mbtype;
mbtype frames[FRAMES_MAX][FRAME_SIZE];
mbtype counter;
mbtype subcounter;
//Ищет совпадения с постепенным уменьшением требования к точности
void net_work(mbtype interface[FRAME_SIZE])
{
mbtype f = subcounter++;
while(subcounter != f)//Обход событий
{
if(memcmp(frames[subcounter], interface, FRAME_SIZE) == 0)//Сравнивает события
{
memcpy(interface, frames[++subcounter], FRAME_SIZE);//Переход к следующему событию и выдача результата через интерфейс
break;
}
subcounter++;
}
memcpy(frames[++counter], interface, FRAME_SIZE);//Запоминает событие
}
void save(unsigned char buf[FRAMES_MAX][FRAME_SIZE])
{
FILE * fp = fopen("brain.mb", "wb");
if(fp != NULL)
{
fwrite(buf, sizeof(mbtype), FRAMES_MAX * FRAME_SIZE, fp);
fclose(fp);
}
}
void load(unsigned char buf[FRAMES_MAX][FRAME_SIZE])
{
FILE * fp = fopen("brain.mb", "rb");
if(fp != NULL)
{
fread(buf, sizeof(mbtype), FRAMES_MAX * FRAME_SIZE, fp);
fclose(fp);
}
else save(buf);
}
void init(void)
{
memset(frames, 0, FRAMES_MAX * FRAME_SIZE);
counter = 0;
subcounter = 0;
load(frames);
}
int main(void)
{
char str[UCHAR_MAX];
init();
for(;
{
memset(str, 0, UCHAR_MAX);
printf("<< ");
gets(str);
net_work(str);
printf(">> %s\n", str);
save(frames);
}
}
Суть этой программы можно описать следующими словами:
1) Если событие А(поступает на интерфейс из внешней среды) достоверно, то достоверно событие В(выдаётся из памяти в интерфейс), а вероятность выпадения события B тем выше, чем меньше событий между ними.
2) if A then B.
3) A ⟶ B
Гипотеза состоит в том, что связи нейронов это не столько информационная структура, сколько статистическая и их можно описать порядком запоминаемой информации в виде многомерного массива.
То есть некоторое количество определённых нейронов описывают кадр - время его появления некоторого состояния сенсорной матрицы и её содержание. При этом сама память представляет собой единый массив кадров распределённых в коре больших полушарий в виде ассоциаций, экономящих с помощью ассоциативных связей между нейронами физическое пространство в черепной коробке, но являющиеся не более чем плоским снимком сенсорной матрицы. В то же время, так называемой душой являются модуляторы, являющиеся продуктом потребностей и управляющие поведением.
Код строго и формально описывает сам процесс бездушного запоминания событий и реагирования на них.
Что может наделить его душой:
Изменённая функция сравнения массивов, которая вернёт степень сходства в виде числа в некотором диапазоне значений.
Снижение порога точности сравнения по мере уменьшения вероятности правильного ответа.
Внедрение в кадр модуляционной структуры, с помощью которой система сможет оценить выгоду и вред текущей ситуации, чтобы выбрать наиболее подходящую реакцию.
Серьёзное увеличение количества потребляемой памяти.
Данная демонстрация в виде чат-бота. Поговорите с программой, но помните, при перезапуске цикл запоминания начинается с самого начала и старые кадры перезаписываются.