Код делает больше обмена по сравнению с методом человеческого уровня - PullRequest
1 голос
/ 27 сентября 2019

Если человек хочет переставить числа 1,2,3,4 с самого большого на наименьшее, он проверит, является ли второе число большим, чем первое число, но не поменяет местами, пока не выполнит проверку остальных.чисел.

Новый порядок становится: 4,2,3,1

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

Новый порядок становится: 2,1,3,4

Программа сделает больше обмена, чем будет делать человек ..
итаким образом, возможно, он менее эффективен, чем человеческий метод?

Есть ли способ применить эффективность человеческого метода к этой программе?или, может быть, человеческий метод не более эффективен, а просто так выглядит?

int a[] = {1,2,3,4};
int total;
total = 4;

int i;
int i2;
int holder = 0;

for (i=0; i<total;) {

    for (i2=i+1; i2<total;) {

    if(a[i] < a[i2]) {
    holder = a[i];
    a[i] = a[i2];
    a[i2] = holder;
    }

    i2=i2+1;
    }

i=i+1;
}

1 Ответ

2 голосов
/ 27 сентября 2019

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


Краткие ответы:

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

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


Может быть, я не точен в своей «метафоре», но я пришел к такому выводу: человеческий мозг делает много (большинство?) Вычислений «визуально»: вы просто смотрите и знаете правильный ответ.Компьютеру потребуются очень сложные алгоритмы, и он все еще не сможет решить проблему.

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

Это уже упоминалось в комментарии: для примера вашей проблемы человек не будет сортировать этот список цифр.Он просто отсчитал бы от 4 до 1.

Если бы проблема давала разные числа, например, {5, 21, 48, 16}, ядра мозга «визуально» определяли бы максимумы и минимумы в списке,и переставить их в правильном порядке, без реальных сравнений (по крайней мере, мы их не знаем).


Человеческий мозг определенно многоядерный.Но ядра не являются независимыми, как в компьютере, который обменивается только некоторыми данными.Они постоянно реконфигурируемы, и я подозреваю, что эти «ядра» мозга фактически перекрываются не только в отношении данных, но и в отношении исполнения.


Чтобы понять, какие вычисления выполняются в «биологических компьютерах»:

Ссылки: Rod_cell , Cone_cell , Optic_nerve

Math:

  • 100 миллионов стержневых клеток;
  • 7 миллионов колбочек;
  • Каждый зрительный нерв человека содержит от 770 000 до 1,7 млн. нервволокна

Теперь вы видите, что максимум 1,7 миллиона зрительных нервов соединяют 107 миллионов датчиков с мозгом.Это на самом деле «определение» сжатия изображения / видео .Глаз (сетчатка?) Сам по себе является автономным компьютером.Если он способен выполнять сжатие видео, то он ДОЛЖЕН (по моему мнению) сортировать короткий список без необходимости передавать данные в мозг.Это может быть объяснением, ПОЧЕМУ мы знаем ответ на проблему, просто глядя на нее - мы получаем ответ вместе с проблемой - вся работа была проделана в другом месте.


Кажется "очевидным", что биологическийКомпьютеры выполняют математические сравнения на каком-то уровне, просто мы не знаем, где и как они сделаны.Может быть, на низком уровне «водитель»?Может быть, они выгружены в какой-то другой процессор?А «аппаратный ускоритель»?Может быть, мы надеемся, что будущее скажет нам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...