
Tigran
19.06.2018
10:39:55
Существуют какие-то доказательства, что на ФП с его неизменяемыми данными можно реализовать любой алгоритм с сохранением асимптотической сложности?

Jentry
19.06.2018
10:40:04

Tigran
19.06.2018
10:40:19
Непрактично :)

Google

Ярослав
19.06.2018
10:41:29
Знаю паренька, любителя хаскеля и лиспа, который контесты пилит на функциональных языках
так что, вероятно, асимптотика играет свою роль

Tigran
19.06.2018
10:42:50
Интересно, на каких

Ярослав
19.06.2018
10:43:47
хаскель в основном, еще скала (хотя это больше смесь java с крестами)

Bogdan (SirEdvin)
19.06.2018
10:44:38

Tigran
19.06.2018
10:45:43

Bogdan (SirEdvin)
19.06.2018
10:46:52
Вы говорите про эффективность или алгоритмическую сложность? Если вы вместо модификации структуры будете ее копировать - то выростет коэфициент, но как выростет сложность?

Ярослав
19.06.2018
10:47:25
в терминах асимптотики RAM-машины разнцы нет, соль в операциях Input/Output в память, которые в данной модели не учитываются

Марина
19.06.2018
10:47:56
Всем привет!
#работа #Vacancy #Moscow #Office #Senior #developer #Go #ML #Ruby #Python #Java #C++
ЗП: 150к - 250к RUB на руки.
Контакт @mandarinka25 (Марина)
Вакансия представлена рекрутинговым агентством.
Ищем: Senior Go Developer -а.
Продукт: Платформа, позволяющая автоматически создавать решения для бизнеса на базе машинного обучения.
Задачи: Создание инфраструктурных решений, выстраивание архитектуры приложений, разработка и поддержка микросервисов.
Ожидаем от вас: Опыт работы от 2 лет, уверенное знание одного из языков (Go, Ruby, Python/Java/C++). Желание переходить на Go. Подробнее http://amp.gs/kPVu
Условия: Опцион, гибкий график, возможность несколько дней в неделю работать удалённо.
Спасибо!

Tigran
19.06.2018
10:47:58

Jentry
19.06.2018
10:48:26
В хаскеле ко всему прочему развито использование алгебраических типов и паттернг-матчинг, как это интерпретировать в сложность? В сложность какой машины, конкретной, на которой выполняется сейчас? А если это выполнить на машине, которая будет уметь в алгебраические типы, тогда как?

Ярослав
19.06.2018
10:48:40
Если говорим о external memory моделях, то да, но там все вычисления по определению эффективные и за О(1)

Tigran
19.06.2018
10:48:48
Ну меня-то интересует та машина, на которой я буду запускать.

Google

Ярослав
19.06.2018
10:49:24

Bogdan (SirEdvin)
19.06.2018
10:49:28

Tigran
19.06.2018
10:50:01
Што
при чём тут это
Если алгоритм делает O(N^2) модификаций над структурой данных со средним размером O(N), то с копированиями это будет уже O(N^3)

Bogdan (SirEdvin)
19.06.2018
10:51:10
Што?

Tigran
19.06.2018
10:51:22
Сначала оптимизация алгоритмической сложности, потом бенчмарки.

Bogdan (SirEdvin)
19.06.2018
10:53:09
Потому что алгоритмическая сложность в целом ниочем, так как никто не помнит про константу. Например, для умножения матриц есть Алгоритм Копперсмита — Винограда у которого O^{2.3727}, но его мало кто использует из-за большой константы.

Tigran
19.06.2018
10:53:43
Это всё так, но между алгоритмом за линию и за квадрат тем не менее обычно выбирают линию.

Pavel
19.06.2018
10:53:50
А там разве под капотом не используются изменяемые структуры данных?

Aragaer
19.06.2018
10:54:28
собссно неизменяемые там нужны, чтобы компилятору было проще придумывать, как решать задачи
а под капотом он может творить любую ересь

Bogdan (SirEdvin)
19.06.2018
10:54:44
А потом окажется, что у этого вашего алгоримта за линию константа 50, а у квадрата 2, и максимальное N=4. Бенчи тут совсем не нужны, давайте проверять сложность.

Denis
19.06.2018
10:55:59

Tigran
19.06.2018
10:56:03
Я тоже так могу

Pavel
19.06.2018
10:56:21
Интересно, часто ли применяют алгоритмы для максимального N=4

Tigran
19.06.2018
10:56:24
А потом окажется, то максимальное N=1000000 и квадрат вообще не может его когда-либо посчитать

Ярослав
19.06.2018
10:56:34

Google

Pavel
19.06.2018
10:56:41
Сортировка

Bogdan (SirEdvin)
19.06.2018
10:56:53

Tigran
19.06.2018
10:56:57
Сортировка скучно, там как раз на списках норм

Pavel
19.06.2018
10:57:19

Denis
19.06.2018
10:57:26

Ярослав
19.06.2018
10:57:26

Tigran
19.06.2018
10:57:46

Denis
19.06.2018
10:58:02
Кидай пруфы
https://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2

Tigran
19.06.2018
10:58:09
Спасибо)

Ярослав
19.06.2018
10:58:16
Дерево отрезков над структурой

Denis
19.06.2018
10:58:43
Это, правда, еще и памяти лишний логарифм кушает

Bogdan (SirEdvin)
19.06.2018
10:58:46

Pavel
19.06.2018
10:58:53

Denis
19.06.2018
10:59:00
Но для многих структур есть честная персистентность без потерь в асимптотике

Tigran
19.06.2018
10:59:16
в асимптотике

Denis
19.06.2018
10:59:26

Pavel
19.06.2018
10:59:29
Я просто хотел немного заняться ФП, поэтому интересуюсь

Denis
19.06.2018
10:59:42

Bogdan (SirEdvin)
19.06.2018
10:59:43
Учитывая, например, как реализована иммутабелность список в clojure, когда они просто сохраняют изменения и создают список из (ссылка на прошлый, новое изменение).

Google

Aragaer
19.06.2018
10:59:52

Bogdan (SirEdvin)
19.06.2018
10:59:56

Aragaer
19.06.2018
11:00:06
в некоторых особых случаях он может отработать за константу

Denis
19.06.2018
11:00:14
Делаешь персистентное RBST и эмулируешь memcpy за логарифм

Pavel
19.06.2018
11:00:25

Tigran
19.06.2018
11:00:29

Denis
19.06.2018
11:00:34

Tigran
19.06.2018
11:00:44

Aragaer
19.06.2018
11:00:55
просто ремап памяти 8)

Artem
19.06.2018
11:01:01

Denis
19.06.2018
11:01:03

Tigran
19.06.2018
11:01:07
Ну, с учётом ограничения на размер адресного пространства всё работает за константу, конечно

Artem
19.06.2018
11:01:12

Tigran
19.06.2018
11:01:13
Зачем тут возник срач "асимптотики vs бенчмарки", я так и не понял.

Denis
19.06.2018
11:02:06
Правда, памяти жрет много и работает медленно. Но хаскеллистов это никогда не волновало

Artem
19.06.2018
11:02:17
data.array.st

Tigran
19.06.2018
11:02:25
это возмутительно!

Google

Roman
19.06.2018
11:02:55

Tigran
19.06.2018
11:03:17

Pavel
19.06.2018
11:03:35
Получается практичнее
Понятно, а не посоветуешь какой-нибудь хороший туториал или книгу? Можно на английском. Так опыт в программировании есть (алгоритмы, промышленное), а в функциональном нет

Denis
19.06.2018
11:04:20
Хоть с хаскеля

Artem
19.06.2018
11:04:41

Tigran
19.06.2018
11:05:01
даёшь стековые языки во все поля
factor ftw! *осёл из шрека.жпг*

Denis
19.06.2018
11:05:36
Что там с изменяемыми структурами в стековых языках?

Lulz
19.06.2018
11:05:43

Tigran
19.06.2018
11:07:36
Но получается всратый и нечитаемый непосвящёнными код, оч круто.

Pavel
19.06.2018
11:08:03

Tigran
19.06.2018
11:08:36
структуризируй в своей голове

Denis
19.06.2018
11:09:52

Roman
19.06.2018
11:10:14