All streams
Search
Write a publication
Pull to refresh
4
0
Send message

Ну так задача о разборчивой невесте - это maximizer, а не satisficer: мы проигрываем и если берём кандидата номер 2, и если кандидата номер 2000.

А в модели "нас устроит любой кандидат из top-10%, и чем дольше мы ищем, тем больше упущенная прибыль", на глаз (точно не считал) влияет соотношение дисперсии и цены каждого дня поиска, даже при бесконечной очереди.

Потому что абсолютного времени нет.
Для землянина, время на корабле течёт медленнее.
Для капитана корабля, время на Земле течёт медленнее.
Если один из них - для простоты корабль, - развернётся и вернётся к начальной точке, симметрия нарушится: один из них ускорялся, а другой нет. Поэтому тогда "на самом деле" время текло медленнее для капитана корабля, и он будет моложе своего брата-близнеца (домоседа).

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

О вариациях "ты даёшь советы лаконично и по делу" писали разные люди. По моему опыту, не то чтобы это повышает точность ответов, но может "разблокировать" комментарии в духе "вот тут у тебя написана фигня, больше так не делай". (Как личная статистика, я ни разу не получал таких комментариев без дополнительного промпта и несколько раз получал с ним, но специально одинаковые запросу не проверял.)

Но самое полезное в промпте - передача информации о своих навыках, чтобы LLM не разжёвывала что такое CRTP или какие бывают численные методы решения дифуров.

Самое смешное, что можно попросить доработать персональный дополнительный промпт саму LLM.

Нет?
В смысле, если LLM по некоторому запросу написала пары (вопрос, ответ), из этого ну нифига не следует, что в ответ на вопрос из этой пары она сгенерирует тот же ответ. Я прямо сейчас из интереса попросил у Grok три задачи на C++, после чего скормил их ему же, и он в третьей накосячил (не фатально, но достаточно заметно).

В язык затащили новую фичку. Но она оказалась малость недоделанной

Что недоделанного в самой фиче? Она работает как и обещалось, возможности объявлять что угодно в области видимости цикла нет, её и раньше не было.

Я бы сказал "схрена ли такое правило линтера", но и правило разумное: если вы никак не используете x вне цикла, то что он вообще делает? Если это хитрое преобразование коллекции с аккумулятором, то правило линтера намекает вынести его в отдельную функцию (или воспользоваться std::transform):

static void TransformData(std::vector<int>* data){
int x = 0;
for(int& elem : *data){
elem = x += elem;
}
}
(Если линтер и в этом случае считает код нарушением, то ИМХО лучше написать явное исключение, чем if(data->empty()) return;)

Наконец, при 30-минутном билде может иметь смысл прогонять линтер локально, чтобы такие штуки не сваливались на голову сюрпризами?..

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

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

Факториал обычно определяется или впрямую как произведение всех натуральных из [1,n], или комбинаторно, как количество перестановок n-элементного множества. То что n! = Г(n+1) - теорема, не определение.

Факториал следует общему правилу "сумма пустого множества слагаемых определена и равна 0, произведение пустого множества множителей определено и равно 1", которое очень-очень удобно в дискретной математике.

Упс...
(Оптимистично) Ну, зато получилась иллюстрация к дальнейшему диалогу о неизбежности ошибок :)

Слово "читаю" предполагает, что это было написано. Если у меня не написано того, что Вы якобы читаете, то Вы не читаете, а выдумываете.

Хорошо, выражусь аккуратнее. По результату прочтения у меня (и, сужу по комментариям, кажется не только у меня) сложилось впечатление, что статья защищает так описанную точку зрения. Если, с вашей точки зрения, это неинтересная вам аберрация восприятия случайного комментатора, то ОК. Вы спросили что, по моему мнению, вы имели в виду - я ответил.

Вот такой выбор есть. А выбора "строгие рассуждения" нет.

Строгий ответ, тем не менее, существует. Да, он вполне может оказаться невычислим доступными ресурсами. Именно поэтому мы полагаемся на эвристики. Но тогда критично понимать, что если эвристика говорит Б, то ответ не обязательно Б, и если он на самом деле не Б, то прислушаться к эвристике будет вашей ошибкой. И иллюстрации этого в примере с нулём я не вижу, более того, считывается (субъективно, как моя частная точка в статистике чтения) отношение "неважно какой строгий ответ, важно что сказали мои любимые эвристики".

Но если вы запустите ракету по эвристикам, и выданная ими программа запуска на самом деле неправильная - извините, в реальности ракета сегодня на Луну не полетит. Если ваши эвристики сказали "х.з. хозяин, мы понятия не имеем, чётное ли число ноль", и вы на этом основании обзавелись убеждением "0 - может чётное, может нечётное, может и то и другое одновременно, смотри "0 - неотрицательное"", то вы впустили себе в голову ложное убеждение. В модельном примере это выглядит как too clever for their own good - что вы запутали сами себя на ровном месте.

Потому что у меня чётко и однозначно сказано, что речь не про теоретическую математику, а про практическую перепроверку выводов/расчётов.

Вы решили проиллюстрировать это математикой - я отвечаю на уровне математики.

На уровне практических задач, что характерно, будет то же самое. Валидно ли писать *reinterpret_cast<std::atomic<int>*>(&val) = 42;? Если идти от правил языка, то ответ "конечно же нет, точка". А если считать что "практическая перепроверка" может быть использована вместо строгих рассуждений, то с одной стороны так нельзя, но с другой у Пети всё правильно работает, проверка не доказала невалидности, так что идея Васи "давайте срочно перепишем этот код" имеет "меньшую степень обоснованности"©.

Если вы хотели показать что-де существуют ситуации, когда правильный ответ по-прежнему совершенно недвусмысленный, но вот ваши эвристики проверки этого ответа могут дать сбой, то даю обратную связь: эту идею из текста лично я не считываю. Вместо этого я читаю нечто вроде "есть правила "для ЕГЭ", а вот если разбираться как на самом деле и делать разные проверки, то уже не так и бесспорно что 0 - чётное".

Неотнесение нуля к нечётным, не делает его чётным.

Если честно, я плохо понимаю - то ли вы действительно не видите подлежащих строгих форм используемых утверждений, то ли намеренно стараетесь не понять сказанного, то ли что-то третье.

Если первое, то (∀n∈N (∃ k∈N n=2k → ¬A(n))) → ¬A(0). (N - множество конечных кардиналов, включающее Card(∅) = 0.)

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

Есть целые числа, Z. (Можно ограничится только натуральными, N.)

Мы договорились для a,b ∈ Z, b≠0 под фразой "a делится на b" понимать "∃ k ∈ Z : a = k*b". Мы договорились под фразой "a - чётное" понимать "a делится на 2". Мы договорились под фразой "a - нечётное" понимать "неверно что a делится на 2"

Из этого определения следуют свойства, вроде того что x*y делится на b если и только если x делится на b либо y делится на b. Или что a делится на 5 если его десятичная запись заканчивается на 5. Или что сумма двух равных друг другу чисел всегда чётная.

Если у вас на руках число n, и вы хотите понять, чётное ли оно, вам необходимо и достаточно показать соответствие определению. В данном случае n=0 это тривиально: "∃ k=0 ∈ Z : n = k*2". Всё.

Вы можете вместо прямого определения использовать какие-то ранее доказанные свойства (к примеру, заметить что 0 = 0+0), но следует соблюдать минимальную аккуратность - скажем, десятичная запись числа 30 не заканчивается на 5, но 30, тем не менее, делится на 5: "∃ k=6 ∈ Z : 30 = k*5". То что конкретное свойство не помогло вам ответить на вопрос о соответствии определению - не признак какой-то глубокой истины, это просто означает что вы выбрали неудачное для вашей задачи свойство.

какой смысл ничего делить на 2 или любое другое число

Например для отслеживания инвариантов. Если я могу доказать что в некоторой ситуации утверждение A(n) верно только если n нечётное, то я автоматом знаю что A(0) неверно.

Здесь, конечно, существенно что "чётность" - эмпирически полезное понятие, которое умеет возникать в самых разных задачах. Никто не мешает мне изобрести свойство "ц-чётность", такое что 2, 4, 6, ... - ц-чётные, а 0 - нет, но засада в том, что на практике я намного чаще смогу получить результат вроде "A(n) верно только если n нечётное", чем "A(n) верно только если n не-ц-чётное".

Что значит правильное определение?

Значит "та расшифровка слова, которую использующая этот язык группа людей считывает по умолчанию". Да, это звучит размыто. Но практически, в отношении "чётного"/"нечётного" консенсус вполне определён, если кто-то честно не знает и хочет узнать, его узнать не так сложно (можно начать с Вики).

'0' - это символ. '1' - тоже символ. Мы можем договориться, что эти символы что-то выражают. Скажем, мы можем заметить за собой некоторую интуицию - что наборы из "трёх коров", "трёх карандашей" и "трёх камней" имеют что-то общее. Это что-то мы можем попытаться записать символом '3'.

После этого мы можем заметить, что (при некоторых условиях) возникают изоморфизмы между символами и внешними событиями. Например, если у меня было восемь кубиков, которые раскатились по полу, то я могу держать в голове "осталось 8", собирать кубики и изменять удерживаемое в голове: "осталось 7", "осталось 3", "остался 1". В этих правилах манипуляции символами практически полезно иметь символ '0' (в нашем сценарии, мысль "осталось 0" - это эмпирическое предсказание "теперь можно выдохнуть и заняться другими делами, не опасаясь наступить на кубик").

Символом '0' я при этом манипулирую по тем же правилам, что и символами '1', '3', '8'. Поэтому в той мере в которой какие-то наборы символов вообще полезно называть словами, полезно называть весь этот набор символов, включая '0', каким-то общим словом. Это может быть слово "числа", это может быть "неотрицательные целые", это может быть "мумзики" (хотя в последнем случае окружающие вас вряд ли поймут правильно).

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

А вот мне интересно, с современными выч.мощностями и всякими ИИ можно сделать какой-нибудь метод обфускации шифротекста?

Это называется "стеганография" и сколько-то таких приёмов уже придумано. Один из самых тупых - зашифрованное сообщение пишем в наименее значимые биты всех пикселей PNG с котиком, эффективность больше 12%. Мизер ловится частотным анализом.

Аналогично, для текста можно предварительно согласовать порождающую грамматику (в духе Reply -> "а он чё?" DialogueElement | "ну нифига себе" DialogueElement) и реконструировать применённые правила, превращая их в биты.

Есть и более тонкие моменты, связанные с тем что ключ короче инфы им с позволения сказать зашифрованной(а именно на этом хакнули Энигму, пользуясь компом слабее Ардуины)

Предлагаете всё шифровать одноразовым блокнотом?

Очевидная проверка (вполне возможно вы её уже учли): это с включением опции Settings -> Privacy -> Advanced -> Censorship Circumvention?

конечно Телега еще работает, но это вопрос времени.

Про текст есть всякие федеративные мессенджеры (я глубоко не лез в их мир, но базовое впечатление - что их буквально десятки). Matrix, Briar, SimpleX...

Я думаю, что в основном люди спрашивают "что не анализируется ТСПУ", которое к СОРМ имеет мало отношения.

То есть, это два разных вопроса: что не может быть нарушено в автоматическом режиме и что не может быть прочитано post factum. Первое проще, из общий соображений ТСПУ не умеет в любой достаточно экзотический здесь и сейчас протокол.

1
23 ...

Information

Rating
5,344-th
Registered
Activity