Как стать автором
Обновить
57
0
Кремнев Валерий @LonelyDeveloper97

Математика, Нейробиология, Программирование

Отправить сообщение
Смотрите:
Простое число — это такое число, которое не делиться на предыдущие простые, первое простое число — 2.
Рекурсивное определение бесконечного множества чисел. Проблема в том, что оно не «содержит бесконечное число элементов». Это не массив.
Для того, чтобы узнать какое простое число идет под номером 105513248123 вам придется потратить запредельное количество энергии и времени.
С другими рекурсивными определениями будет тоже самое. Вы не сможете сказать, что они дадут на N шаге алгоритма.

Одна система проще другой если обе дают одинаковые выходы при одинаковых входах и система описывается меньшим числом символов


Давайте продолжим на примере простых чисел.
У вас есть функция, она умеет считать все простые числа. Вам для каких-то целей потребовались простые числа от [49млн, 50млн]. Простое число номер 40 млн, простое число номер 40 млн + 1 и т.д.

// call: calcPrime(100000000)
// Извините за такой код, но суть мне кажется ясна.

static long calcPrime(int number) {
        int i = 0;
        List<Long> primes = new ArrayList<>();
        primes.add(2L);
        long current = 2;
        int countTo = number + 1;
        while (i < countTo) {
            boolean isPrime = true;
            for (long prime : primes) {
                if (current % prime == 0) {
                    isPrime = false;
                }
            }
            if(isPrime){
                primes.add(current);
                i++;
            }
            current++;
        }
        return primes.get(countTo);
    }


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

Вместо него вы можете залить уже посчитанные простые числа от 49млн до 50млн. Это огромный файл весом больше мегабайта. Он очень длинный и займет очень много места.
Зато доступ к ним будет за O1, если распихать их в массив.

Выход у двух систем будет одинаковый — вы получите свое простое число. Просто в одном случае это займет меньше секунды, а в другом… Я не знаю точно. Часы? Дни? Годы?

Считать, что любую систему можно разложить на элементарные системы сложности 1 единственным способом не верно. Считать, что сложность элементарных систем можно складывать, тоже не верно.


А можете подсказать где это в тексте? Я не вижу такого. Я писал про действия, а не про системы…
Я добавил репозиторий, где все, о чем я говорил написано на Java.
Вот: github.com/lonelydeveloper97/ModelExample/tree/master/src/com/lonelydeveloper97

Теперь «кровавые недоопределения» обрели форму кода, применены для описания системы из 2 монет, и считают сложность 300 перебрасываний монеток, по «недоопределению».
Можно пощупать, поиграться, построить свои модели. It works.

К тому же, все получилось намного короче.
Возможно я не правильно выразился.

Состояние одной монетки — это любой из элементов орел|решка|ребро. Возможные состояния монетки: {Орел, Решка, Ребро}.
Состояние элемента и его возможные состояния — это сам элемент. Он уже определен, мы не разбиваем его дальше.
Состояние системы две монетки: Пара состояний монеток 1 и 2. В моем определении состояние — рекурсивная функция, условие выхода из рекурсии — функция применена к элементу.

E — функция текущего состояния системы.
S — система. S = {S1...Si}, где Sk — подсистемы системы.
E(S) = (E(S1),… E(Si)). Если Sn — Элемент, то E(Sn) = Sn.

Для монеток:
Элементы: {орел, решка, ребро};

S — 2 монетки. S1 — Монетка 1, S2 — Монетка 2.
V = {орел, решка, ребро} — возможные состояния. Одинаковы для обеих монет.

e1 = орел. Это состояние монетки 1. Принадлежит V.
e2 = решка. Это состояние монетки 2. Принадлежит V.

S={S1,S2}, S1 = (V, e1), S2 =(V, e2).
E(S1) = e1. E(S2) = e2
E(S) = (e1, e2) = (орел, решка)

Перекинули монетки, E(S2) стало Орел.
E(S) = (e1, e2) = (орел, орел)

Система две по две монетки:
SS = {S2m1, S2m2}
E(SS) = (E(S2m1), E(S2m2)) = ((e1,e2), (e1,e2)) = ((орел, решка), (орел, решка)).

Я написал это математически и на Java. Вы можете выкачать репозиторий, который я скинул, изучить код. Его не много. Соотнести его с математическим выражением определений. Поставить breakpoint'ы и посмотреть, что оно работает ровно как я сказал. Попробовать описать другие системы в таких же терминах.
Ой, спасибо. Действительно, местами перепутал)

Про парсер на мобилах не знал. Сейчас сам зайду с мобильного и посмотрю.
Это не совсем так.
Состояние системы две монетки = пара состояний монеток. (орел, решка) или (ребро, решка) и т.д.
Для одной монетки состояние действительно вырождается. Оно может быть: орел | решка | ребро.

Я решил написать все на Java, думаю если вам знаком любой объектный язык — будет проще)
github.com/lonelydeveloper97/ModelExample/tree/master/src/com/lonelydeveloper97/model
Смотрите. У вас есть какое-то множество вариантов «использования» вашей системы. Оно включает в себя все действия, которые вы можете с ней совершить. В том числе и «Внести изменения».

image

Совокупная сложность действий обозначена за C.
Изменение — одно из этих действий. Его сложность обозначена за Cи.
После совершения действия — система поменяется. У нее будет новая совокупная сложность. Она обозначена за C'.

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


Это как?
Смотрите. Я астроном и изучаю звезды. Я хочу определить цвет звезды. Как я могу это сделать, не зная об ее скорости? Если я просто посмотрю на нее — то я увижу не правильный цвет. Потому что есть эффект доплера. Т.Е. если меня интересует цвет, то меня сразу интересует скорость.
Кстати, оба понятия связаны еще и с температурой.
А если вспомнить про энергию, которая связана с массой, да еще и через скорость…
Как вы собираетесь независимо их изучать?

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

Почему? Что такое объект, и почему то, что изучают эти дисциплины — не объекты? И если «не объект» — это субъект, то что такое субъект? Когда я иду в словарь, там пишут — это человек. Окей, я взял, подошел и пнул стол. Это взаимодействие было субъективным, ведь в нем участвовал я? После этого на столе появились субъективные вмятины, а у меня субъективно распухли пальцы?

Простите, но пока у нас есть только информация что объективно — это не субъективно, а субъективно это не объективно. Я пытаюсь разорвать этот круг и соотнести эти вещи с реальностью, чтобы они наконец-то перестали циклиться друг на друга.

Какую часть реальности описывают слова субъект и субъективно и чем эта часть реальности отличается от остальной, объективной?
С вашим кодом не станет легче работать, даже если все вокруг думают, что его сложность такая же, как у табуретки.

Общеизвестная и признанная концепция структурного программирования утверждает обратное: со спагетти-кодом работать заметно тяжелее.


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

Если код представлял из себя спагетти — он будет спагетти. Если «документацией» являются комментарии формата «здесь я сложил 2 числа» — у кода нет документации.
И никакие желания, уверенность и проч. тут не помогут.

Спасибо за комментарии, я с радостью поправлю эти моменты.
Вы правы.

Я смотрел на колмогоровскую сложность и на сообщение минимальной длины. Но когда интерпретатором сообщения является мозг, то минимизация «записи» с сохранением количества информации — не работает.
Есть определенные проблемы с тем, как работает человеческая память. Из-за них, для упрощения чтения, модель в некоторых случаях должна быть «избыточна». Это тема одной из следующих статей.

Вполне возможно, что я просто плохо понял сложность Колмогорова или концепт СМД и их можно использовать в «условиях мозга». Но я не умею.
Хм.
Смотрите.

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

Где в этом процессе начинается «субъективное восприятие»?

Мне казалось, что это слово используется для описания «модели реальности», составленной мозгом, на основе хранящейся в нем информации. Но то, что информация в нем хранится — это объективно. Или нет? Ведь она тоже является «моделью» информации извне. Но она получена вполне себе объективным образом, через изменение состояния нейронных связей, который вызван такой же объективной их активацией из-за объективного воздействия на рецепторы. У меня возникают затруднения, с тем чтобы провести здесь границу объективности и субъективности.

Прошу прощения за предыдущий комментарий. Я ошибся и невнимательно прочитал ваш. В результате я увидел знакомый шаблон и слишком быстро и резко на него среагировал. Это было неправильно.

Вы подняли очень интересный вопрос. И мне действительно не стоит использовать слово «субъективно», если оно обозначает зависимость от человека и состояния его мозга. И не стоит использовать «объективно», как обозначающее независимость от них.
Есть ли слово, которое обозначает именно «независимо от желаний и ожиданий»?
Да.
А к чему был этот вопрос?
Весьма удобно не браться за ручку, а то, что вы слыша слово «ручка» понимаете, что можете за нее взяться. Вам не нужно это объяснять, эта информация содержится в слове «ручка».

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

А сейчас вы переходите к стандартному спору об определениях.

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

Второй пункт. Сложность действительно зависит от субъекта. Если у школьника из нашего примера будут связаны руки за спиной — ему действительно будет сложнее переложить кирпич. Но связанные за спиной руки — это весьма объективная причина)

Примерчик: Есть 2 компа.
Я хочу чтобы на каждом из них было 50 нужных мне файлов, размер — одинаков.
На первом уже есть 25 из них.

Комп — это исполнитель, он будет грузить эти файлы. Сложность загрузки каждого файла — одинакова.

Первому компу в 2 раза проще это сделать. Но, у меня не поворачивается язык сказать, что это вызвано субъективным восприятием этого компа, а не объективными причинами.

Я брал определение субъективности из вики, и могу ошибаться. Оно выглядит так: Субъекти́вность — это выражение представлений человека (мыслящего субъекта) об окружающем мире, его точки зрения, чувства, убеждения и желания.

Здесь нет ничего, про объективную информацию, которая имеется о мире. Эти вещи на нее опираются, но они — следствия. Не причина. И могут быть ошибочны.
И да, кажется я понял, почему мы друг-друга недопонимаем. Прочитайте Simple Truth, я думаю так нам будет легче.
  1. Не понял, объясните пожалуйста подробнее.
  2. Я привел пример. И сказал, что хороший вопрос — ограничивает область возможных ответов. На вопрос «что такое просто?» можно ответить, что просто — это огурец. И я не могу математически доказать, что просто — это не огурец, при такой постановке вопроса. Для меня это свидетельство того, что вопрос не корректен.
  3. А что такого в рекурсивных определениях? Я указал условие выхода из рекурсии.
    Вас же не смущает что: «Простое число — это число, которое не делится на предыдущие простые числа, первое простое число — 2». К тому же, у понятия алгоритм есть сложности с определением. Можете почитать про аппарат рекурсивных функций, но я не стал его пихать в статью.
  4. Я нигде не говорил, что изобрел определение понятия Система.
    Я прочел большое количество статей с разными определениями. Где-то авторы наворачивали на элементы «параметры элемента», где-то связи… Их можно выразить через одну математическую абстракцию — множество. Зачем мне связи в определении, если я могу определить их в тот момент, когда захочу, просто воспользовавшись определением функции через теорию множеств?
    Мне немного сложно воспринимать то, что вы написали. Вы не могли бы скинуть математическое определение? Cкорее всего окажется, что мы говорим об одном и том же разными словами. Вы прочли спойлер «IT'S MATHEMATICS TIME» в этом разделе?

Я могу сократить статью. Раз в 100. Выразив все мысли математически, на пол листа A4. Но, у людей есть проблемы даже с такой простой вещью, как теорема Байеса. Не всем дано мгновенно привязывать математические формулы к реальному жизненному опыту. Я вот не умею, мне нужно долго работать, чтобы понять, как эти непонятные значки влияют на мою жизнь.

P.S.
У меня сложилось впечатление, что вы пробежали статью за 10 минут, пропустив половину текста. Из-за этого вещи, которые вы привели, «вырвались» из контекста. К сожалению, такой способ взаимодействия со статьей при первом прочтении — не подходит.

Простота для понимания = минимальное количество усилий чтобы понять код.
Простота для расширения = минимальное количество действий чтобы добавить функциональность.


Разве это не цели код ревью? Конечно, еще есть knowledge sharing, проверка на ошибки...


Но вы правы, возможно мне стоит прояснить этот момент. И

Хм.

У меня есть два предположения:

  1. Статья воспринимается тяжко, потому что я где-то накосячил.
  2. Статья воспринимается тяжко, потому что объем информации большой, и есть контр-интуитивные участки. Мозгу не нравится, когда его предположения рушат, как в примере с интерфейсами или физиками. И в результате он сильно устает.

Если первое — надо понять где я ошибся. Если второе — то, к сожалению, я не могу с этим ничего сделать.
<«sarcasm»>Электрик за стеной не объясняет почему ругань идет именно из выключателя. А если начать наворачивать условия, что он прямо за выключателем, или что для выключателя отверстие сквозное — гипотеза становится сложнее</«sarcasm»>

Вы не могли бы раскрыть мысль про вступление? Я не понял, какой момент вам не понравился. Из-за этого я не могу его исправить или сказать, почему он выглядит так.

Тоже заинтересован в приложении.
Это бы дало кучу возможностей, вроде звонков/открытия расширенных версий карточек.
И даже могу его написать, но для этого, думаю, надо сначала договориться с Milfgard

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность