Сюръективные функции - PullRequest
       19

Сюръективные функции

4 голосов
/ 19 ноября 2009

В качестве дополнительного вопроса мой преподаватель по математике в модуле информатики попросил нас найти примеры, когда сюръективная функция жизненно важна для работы системы, он сказал, что не может думать ни о чем!

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

Ответы [ 3 ]

3 голосов
/ 19 ноября 2009

Мастер редактирования :
[кстати, спасибо за принятый ответ.]

При рассмотрении моего ответа и других в этом посте я понял две вещи.
Первый - это тот факт, что при взгляде на вещи на более высоком уровне абстракции большинство (все?) Из приведенных [контр-] примеров являются формой функции * дискретизация *, Другими словами, они соответствуют повсеместному требованию в компьютерных системах отображения [возможно, бесконечно] множества объектов / значений в набор (возможно, также «бесконечный», хотя чаще всего конечный) дискретных объектов / значений. Хотя не все такие отображения подразумевают или требуют небиективного подхода, многие это делают, поэтому найдено несколько примеров.
Другое наблюдение состоит в том, что наиболее убедительные примеры, кажется, связаны со случайными (случайными) процессами или с базовыми примитивами, которые их поддерживают.

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

Это может быть вопросом понимания именно рамки вопроса:

  • подсчитывать биективные функции (они действительно являются частным случаем исключения)
    Редактировать : Нет, биективные функции не рассматриваются.
  • должен ли он быть "функцией" в смысле процедурного вычисления, в отличие от "отношения", как в базах данных
    Редактировать : да, процедурная функция своего рода ... "принимает значение и возвращает другое значение" (ИМХО это различие очень незначительно, поскольку любая "карта" является функцией, независимо от внутренней работы, но давайте примем это ограничение «как числовые вычисления» в духе этого вопроса)
  • определить "витал" ...

С учетом всех этих предостережений может применяться следующее:

  • Элементарные математические функции, такие как ABS () или даже ROUND (), FLOOR () (абсолютное значение, направление десятичного значения / значения с плавающей запятой до ближайшего целого числа соответственно) и т. Д.
    Например, в случае ABS (), используемой в контексте программы, которая рисует фигуры на экране, используя различные свойства, скажем, симметрии, сможет рассчитывать на получение двух и ровно двух значений для сопоставления с данным значение и иметь все значения в данном интегральном диапазоне (скажем, от 0 до 10), чтобы быть значением ABS (), чтобы рисунки не выглядели смешно; -)
  • функция Soundex (и ее многочисленные производные)
  • Операция по модулю с, даже в таких тривиальных случаях, когда отображается состояние процесса, каждый обработанный x элементов.
  • Процессы классификации : важно, чтобы существовали важные факторы сокращения (тысячи экземпляров, сопоставленных с несколькими категориями), и очень важно [в некоторых случаях], чтобы все экземпляры давали один и только одна категория (например, в системах принятия решений в режиме реального времени).
  • Различные "простые" математические функции, используемые в генераторах псевдослучайных чисел .
    Крайне важно, чтобы они были сюръективными, чтобы а) все значения в пространстве имен были бы пригодными для повторного использования, в действительности, подразумеваются ожидания от конкретного, часто равномерного, распределения. (Обратите внимание, что это может быть повторением приведенного выше примера «по модулю», хотя он не должен использовать собственно арифметику по модулю, это может сделать другая математическая функция)

Ниже приведен плохой пример, когда Мартин пояснил, что [математические операции, такие как функции, которые] «принимают значение и возвращают другое значение» - это то, что определяет «функцию», следовательно, дисквалифицирует «карты», управляемые базой данных / таблицами, и подобные. А также, что биекции не учитывались.

  • Отношения один-к-одному (или отношения один-ко-многим в этом отношении): может быть так важно поддерживать их, что нам требуются триггеры и т. Д., Чтобы не отставать от ссылочной целостности
1 голос
/ 19 ноября 2009

Хеш-функция в идеале должна быть сюръективной.

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

Edit: Я думаю, что вопрос не очень значимый. В конце концов, есть много случаев, когда вы должны быть в состоянии получить любой желаемый результат. Просто подумайте о функции идентификации и представьте, где можно утверждать, что она используется:

  • использование ссылки на переменную в программировании
  • используя текст (или даже hex-редактор) для создания файла

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

1 голос
/ 19 ноября 2009

Очень простой планировщик, реализованный функцией random (0, количество процессов - 1), ожидает, что эта функция будет сюръективной, иначе некоторые процессы никогда не будут выполняться.

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

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