@ru_python

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

Jentry
19.06.2018
10:40:04
Котоны, я тут почитал про Хаскель и у меня встал вопрос. Я правильно понимаю, что когда вы пишете на Хаскеле, вы не думаете об асимптотической сложности кода вообще?
В понятиях хаскеля ты и не должен думать, твоя задача объявить формализм, а задача интерпретатора найти решение. Слишком высок уровень над машиной

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 Условия: Опцион, гибкий график, возможность несколько дней в неделю работать удалённо. Спасибо!

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
Ещё как вырастет. Копировать массив длины N стоит O(N), а модифицировать - O(1)
Как минимум, проблема в том, что O(N^2) + O(N) = O(N^2), разве нет?

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. Бенчи тут совсем не нужны, давайте проверять сложность.

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
Интересно, часто ли применяют алгоритмы для максимального N=4
Никогда не сортировали массив из 4 элементов или не искали там максимальное?)

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
Никогда не сортировали массив из 4 элементов или не искали там максимальное?)
искать - иммутабельная операция и максимум за линию

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
Ещё как вырастет. Копировать массив длины N стоит O(N), а модифицировать - O(1)
Кстати, а вот интересный вопрос, откуда вы взяли такую оценку? Мне это кажется не очень очевидным.

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
Ну, memcpy быстрее линии не может работать)
С правильной структурой может

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

Google
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
Учитывая, например, как реализована иммутабелность список в clojure, когда они просто сохраняют изменения и создают список из (ссылка на прошлый, новое изменение).
Ну понятно, что на специальных структурах данных быстрое копирование. Но у любой ли структуры есть такой неизменяемый с быстрым копированием эквивалент?

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

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
mmap?
Хитро!

Зачем тут возник срач "асимптотики 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
Tigran
19.06.2018
11:03:17
просто ремап памяти 8)
Кстати, ремап же по страницам идёт. Значит, всё равно O(N)!

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

Tigran
19.06.2018
11:05:01
даёшь стековые языки во все поля

factor ftw! *осёл из шрека.жпг*

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

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

Pavel
19.06.2018
11:08:03
Начни с любого функционального языка, чтобы суть понять
Да начать, изучить базовые вещи я могу, а меня интересует что-то более структуризированное и нацеленное на практику, типа такого, но про ФП



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

Roman
19.06.2018
11:10:14
Зачем тут возник срач "асимптотики vs бенчмарки", я так и не понял.
А ещё при прочих равных алгоритмы с одинаковой асимптотикой и константами могут сильно различаться

Страница 5715 из 9768