Задать вопрос
  • Как скопировать права и владельцев с папок и файлов в shell на macOS?

    @vadimr
    ACL – это права доступа, не укладывающиеся в систему user/group. Если права выставляли вручную, то они, скорее всего, будут в ACL.
    Написано
  • Можно ли так доказывать правильность алгоритмов?

    @vadimr
    floppa322, вопрос доказательства правильности алгоритмов вообще очень сложный. Дай бог если его хорошо понимает тысяча человек, владеющих русским языком, и десять тысяч во всём мире. Я вот лично не понимаю. А скорее я бы снизил обе эти оценки на порядок.

    Иначе бы в программах почти не было ошибок. Вот у того же Кнута за несколько десятков лет 7 ошибок в его программах Tex и Metafont нашли, притом, что он назначил экспоненциально увеличивающиеся премии, а пользователей этих программ очень много.
    Написано
  • Можно ли так доказывать правильность алгоритмов?

    @vadimr
    floppa322, это не избыточно, а совершенно необходимо, если мы говорим о формальном доказательстве. Необязательно именно через абстрактную машину, можно через лямбда-исчисление, что равнозначно. Но для доказательства должна быть формальная аксиоматика.

    Я, кстати, покуда учился в институте, тоже не догонял, зачем Кнуту понадобилась гипотетическая машина MIX. Только намного позже понял.
    Написано
  • Можно ли так доказывать правильность алгоритмов?

    @vadimr
    floppa322, я не читал работу Дейкстры и не являюсь специалистом по теории вычислений, поэтому не готов в деталях обсуждать вопрос доказательства его алгоритма, хотя знаю сам этот алгоритм. Но имея высшее образование, аспирантуру, некоторый опыт преподавания и научных публикаций в области программирования, я всё же в состоянии увидеть границы своего незнания в данном случае.

    В вашем же исходном вопросе проблема упорядоченности просто бросается в глаза.

    Цель доказательства-то какая? Если чисто математическая, то надо начинать от аксиом. Если это вопрос надёжности программного обеспечения, то тем более жизни людей, или что там ещё, что тоебует формальных доказательств, нельзя ставить в зависимость от неизвестных обстоятельств работы процессора.
    Написано
  • Можно ли так доказывать правильность алгоритмов?

    @vadimr
    floppa322, по ИТМО тоже не надо. Эти вопросы выходят за рамки высшего образования и находятся примерно на уровне аспирантуры института Стеклова. Лекции академика Беклемишева, например, можно послушать на ютубе по такому предмету.

    В высшем техническом образовании все алгоритмы даются без формальных доказательств.
    Написано
  • Можно ли так доказывать правильность алгоритмов?

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

    А так в Википедии, например, написано, что Дейкстра запретил goto, а это всего лишь частное допущение из середины его сложной математической статьи на сотню страниц.
    Написано
  • Можно ли так доказывать правильность алгоритмов?

    @vadimr
    floppa322, вы сейчас оперируете не имеющим конкретного содержания сочетанием слов. Что значит "так" или "не так"?

    По своей проблематике ваша задача относится к материалу третьего тома Кнута. Посмотрите, как Кнут строит доказательства таких алгоритмов. Сначала он аксиоматически определяет архитектуру некой абстрактной вычислительной машины и точно задаёт формальные свойства её команд. Дальше он в этой придуманной им аксиоматически заданной системе команд пишет алгоритм и уже относительно свойств вычислительной машины доказывает свойства алгоритма. Это и есть формальное доказательство. А то, что вы пишете - просто некие рассуждения по поводу.
    Написано
  • Можно ли так доказывать правильность алгоритмов?

    @vadimr
    Что значит “невалидными”? Вы готовы гарантировать, что ваш процессор сравнивает все числа именно так, как вы считаете правильным?

    В качестве интуитивной идеи ваше рассуждение верное, но доказательством правильности алгоритма в формальном смысле оно не является. Хотите доказывать правильность – начинайте с аксиоматики в лямбда-исчислении, я так считаю.

    Очень многие ошибки в алгоритмах вообще происходят от идеализации происходящих в компьютере вещей (в частности, и от игнорирования разницы между математическим понятием числа и его компьютерным представлением).
    Написано
  • Как получить исходные сигналы спутников ГЛОНАСС?

    @vadimr
    Потому что у них не предусмотрен такой интерфейс. Можно сказать, что дополнительный интерфейс стоит денег, которые пользователи не готовы платить, а можно – что это искусственное сегментирование рынка.
    Написано
  • В чем заключается суть бинарного поиска неотсортированного массива?

    @vadimr
    (define a (vector 7 9 1 1 1 2 2 4 5 6))
    (define x 4)
    
    (define (1+ x) (+ 1 x))
    
    (define (phase1 l r)
      (let ((m (floor (/ (+ l r) 2))))
        (cond
            ((= (vector-ref a m) x))
            ((>= l r) #f)
            (else (or
                (if (< (vector-ref a l) (vector-ref a m)) 
                  (phase2 l m) (phase1 l m))
                (if (< (vector-ref a m) (vector-ref a r)) 
                  (phase2 (1+ m) r) (phase1 (1+ m) r))
            ))
        )
      )
    )
    
    (define (phase2 l r)
      (let ((m (floor (/ (+ l r) 2))))
        (cond
            ((= (vector-ref a m) x))
            ((>= l r) #f)
            ((> (vector-ref a m) x) (phase2 l m))
            (else (phase2 (1+ m) r))
        )
      )
    )
    
    (pp (phase1 0 (- (vector-length a) 1)))


    Сложность этого алгоритма логарифмическая от количества уникальных элементов массива плюс линейная от количества повторяющихся, и это значительно лучше того, что пишут индусы на leetcode, начинающие с поиска границы перебором.
    Написано
  • В чем заключается суть бинарного поиска неотсортированного массива?

    @vadimr
    Ну то что бинпоиск неэффективен на конкретном примере, не значит, что он не работает в такой задаче вообще.

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

    @vadimr
    Евгений Лернер, считайте, что условный оператор равен по времени выполнению на gpu огромному количеству других операторов.

    Если только компилятор не изыщет возможности его устранить, но это другая история.
  • Почему процессоры gpu не любят разветвлений в программе?

    @vadimr
    Евгений Лернер, ничего не сломается, просто gpu не будет быстро работать и от него не будет пользы.