S>Впрочем, вы противоречите сами себе — как бы вы ни задавали функцию перебора — опосредованно, как F:N->X или как Succ: X->X, всё равно вы не получите желаемого результата: трудовато сформулировать условие "функция должна покрыть всё множество X".
вопрос же не в том, как это сформулировать, а как это можно использовать для реального мира, в котором кол-во шагов применимых алгоритмов можно ограничить наперед заданным числом N.
S> В головах остальных людей голоса дают такое определение отображения
Функция f (отображение, операция, оператор) — это закон или правило, согласно которому каждому элементу x из множества X ставится в соответствие единственный элемент y из множества Y.
допустим, что отображение и функция — это одно и тоже.
тогда это определение противоречит определению многозначного отображения
Многозначное отображение — разновидность математического понятия отображения (функции).
S>>Ты определение отображения не забыл освежить?
DG>вот это утверждение: либо не фальсифицируемо, либо подразумевает тривиальный ответ.
DG>избегай, пожалуйста, тривиальных вопросов и переведи, пожалуйста, вопрос в фальсифицируемую плоскость — либо полноценным утверждением: "здесь можно применить вот такую формулировку такого-то определения, и данное утверждение противоречит выводу №5 из этого определения", либо частичным "а как это согласуется вот с такой-то формулировкой определения?"
Попробую:
DG>следующий вариант задает отображение с повторяющимися элементами
DG>
DG>F'(false) -> i, where 0<=i<=2
DG>F'(true) -> i, where 3 <= i < = 5
DG>
Описанная конструкция противоречит определению отображения, взятому, например, отсюда.
Утверждение о том что это задание отображения ложно.
Ок, хорошо, если вы хотели, чтобы отображение было сюрьективным, стоило так и написать, а не размазывать сопли на весь форум.
DG>тогда это определение противоречит определению многозначного отображения DG>
DG>Многозначное отображение — разновидность математического понятия отображения (функции).
Нет, не противоречит. Смотрите определение. Там просто область значений выбирается из 2^Y.
И если вам хотелось использовать многозначное отображение, то стоило об этом упомянуть в своём определении, т.к. по умолчанию отображения считаются однозначными.
Впрочем, остаётся загадкой главный вопрос: зачем вы занимаетесь умственным онанизмом вместо того, чтобы пользоваться готовыми определениями?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
A binary relation R is usually defined as an ordered triple (X, Y, G) where X and Y are arbitrary sets (or classes), and G is a subset of the Cartesian product X × Y. The sets X and Y are called the domain (or the set of departure) and codomain (or the set of destination), respectively, of the relation, and G is called its graph.
The statement (x,y) ∈ R is read "x is R-related to y", and is denoted by xRy or R(x,y). The latter notation corresponds to viewing R as the characteristic function on "X" x "Y" for the set of pairs of G.
The order of the elements in each pair of G is important: if a ≠ b, then aRb and bRa can be true or false, independently of each other.
то определение, которое ты привел соответствует подвиду отображений
functional (also called right-unique[1] or right-definite[citation needed]): for all x in X, and y and z in Y it holds that if xRy and xRz then y = z; such a binary relation is called a partial function.
зы
это как раз к теме, насколько ты свое толкование определений можешь считать эталонным. и насколько тот или иной авторитет (в частности коллективный в виде вики) можно считать эталонным.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, DarkGray, Вы писали:
DG>>тогда это определение противоречит определению многозначного отображения DG>>
DG>>Многозначное отображение — разновидность математического понятия отображения (функции).
S>Нет, не противоречит. Смотрите определение. Там просто область значений выбирается из 2^Y. S>И если вам хотелось использовать многозначное отображение, то стоило об этом упомянуть в своём определении, т.к. по умолчанию отображения считаются однозначными.
Да ничего бы не изменилось, т.к. элементом области значений многозначного отображения есть подмножество. И последовательность, определенная многозначным отображением есть последовательность подмножеств, которая записывается, например следующим образом:
Здравствуйте, DarkGray, Вы писали:
S>> В головах остальных людей голоса дают такое определение отображения:
DG>почему в головах этих остальных людей определение функции вместо определения отображения? DG>http://en.wikipedia.org/wiki/Binary_relation
Кручу-верчу, запутать хочу!
Почему в твоей голове вместо определения отображения определение отношения?
Здравствуйте, DarkGray, Вы писали:
S>> В головах остальных людей голоса дают такое определение отображения:
DG>почему в головах этих остальных людей определение функции вместо определения отображения? DG>http://en.wikipedia.org/wiki/Binary_relation
Не вместо, а вместе. Функция, отображение, операция, оператор — это синонимы.
А вы зачем-то вместо определения отображения приводите определение отношения. Когда уже вы прекратите этот бессмысленный троллинг?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
S>И последовательность, определенная многозначным отображением есть последовательность подмножеств, которая записывается, например следующим образом:
это странный вывод.
многозначное отображение X->Nat есть обычное отображение, которое можно отразить и получить Nat->X (при этом если X->Nat было right-unique, то Nat->X будет left-unique), то это даст последовательность. Свойство, чтобы в Nat не было дырок желательно, но не является необходимым. Nat с "дырками" можно еще раз отобразить уже в Nat без "дырок".
с точки зрения математики здесь всё корректно, а вот с точки зрения реальных алгоритмов уже не всегда ("затягивание" дырок может выйти за допустимое кол-во шагов)
S>А вы зачем-то вместо определения отображения приводите определение отношения.
согласен был не прав, использовал слово "отображение" вместо термина "отношение".
значит во всем что было написано до этого, вместо слова "отображение" читать "отношение".
Здравствуйте, samius, Вы писали:
S>Здравствуйте, Sinclair, Вы писали:
S>>Здравствуйте, DarkGray, Вы писали:
DG>>>тогда это определение противоречит определению многозначного отображения DG>>>
DG>>>Многозначное отображение — разновидность математического понятия отображения (функции).
S>>Нет, не противоречит. Смотрите определение. Там просто область значений выбирается из 2^Y. S>>И если вам хотелось использовать многозначное отображение, то стоило об этом упомянуть в своём определении, т.к. по умолчанию отображения считаются однозначными. S>Да ничего бы не изменилось, т.к. элементом области значений многозначного отображения есть подмножество. И последовательность, определенная многозначным отображением есть последовательность подмножеств, которая записывается, например следующим образом: S>
S>{ { 1 }, { 1, 2 }, { 1, 2, 3 }, ...}
S>
S>Речь-то явно не о таких последовательностях была.
В принципе, я вижу свет в конце тоннеля — если мы скажем, что бесконечной последовательностью является
сюрьективное многозначное отображение произвольного множества элементов на множество натуральных чисел,
а конечной последовательностью —
сюрьективное многозначное отображение произвольного множества элементов на множество индексов {i: i ∈ ℕ, i ≤ Length}
, то всё бы начало сходиться.
Но, во-первых, это определение сильно отличается от предложенного DG, а во-вторых, оно один хрен не совпадает с тем, чем пользуются все остальные люди.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, DarkGray, Вы писали: DG>согласен был не прав, использовал слово "отображение" вместо термина "отношение". DG>значит во всем что было написано до этого, вместо слова "отображение" читать "отношение".
Не получится. Прямая подстановка даёт конструкции, у которых нет смысла на традиционном математическом языке. Вот смотрите:
формальное определение последовательности — это произвольное множество отображенное на множество натуральных чисел
Как тут заменить? Давайте возьмем высказывание, где хотя бы использована форма существительного:
я имел ввиду именно [отображение] отношение множества на натуральные числа
Нет такой конструкции — "отношение на". Парсер сломался.
Ну, давайте выбросим парсер и попробуем сконструировать что-то из того, что вы предлагаете. Есть, значит, некоторое множество X. Есть также и натуральные числа N.
Вроде бы есть какое-то отношение. По определению, отношение — это некоторое подмножество декартова произведения двух множеств. Надо полагать, это множества X и N.
Ок, вот мы задали некоторое отношение R в (X x N). Как нам из этого отношения получить последовательность?
На всякий случай напомню, что в последовательности очередной элемент должен определяться однозначным образом.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
S>Ок, вот мы задали некоторое отношение R в (X x N). Как нам из этого отношения получить последовательность?
потребовать right-unique.
также необходимо, чтобы отношение было полным справа на всем множестве Nat(для бесконечных последовательностей) или на интервале (1..L), если это конечная последовательность.
при этом произвольное неполное справа right-unique отношение X x N можно дополнить (взаимооднозначным полным справа и полным слева на множестве для всех N, для которых есть образ в X) отношением N x N'. что даст отношение X x N', которое будет right-unique и полным справа. если это отношение обратить как N' x X, то оно будет слева полным и unique.
и соответственно последовательный перебор множества N' с использованием отношения N' x X — даст последовательность элементов множества X.
соответственно можно считать, что для произвольного отношения (X x N) преобразуемого в последовательность достаточно показать, что оно является right-unique. а необходимость полноты на N, и то, что требуется ввести дополнительное отношение N->N', если нет полноты — подразумевается по умолчанию
Здравствуйте, DarkGray, Вы писали:
S>>Ок, вот мы задали некоторое отношение R в (X x N). Как нам из этого отношения получить последовательность?
DG>потребовать right-unique. DG>также необходимо, чтобы отношение было полным справа на всем множестве Nat(для бесконечных последовательностей) или на интервале (1..L), если это конечная последовательность.
Ну вот видите, как сложно. В то время как классическое определение не нуждается во всех этих уточнениях. Вопрос: зачем так извращаться, когда можно просто взять готовое определение и пользоваться им?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
где сложные? вроде сплошные тривиальные выводы, которые элементарно восстанавливаются из контекста.
S> В то время как классическое определение не нуждается во всех этих уточнениях. Вопрос: зачем так извращаться, когда можно просто взять готовое определение и пользоваться им?
какое готовое? и как его использовать для моего утверждения, что если хочется записать сложную последовательность из всех элементов множества X в декларации программы, то:
лучше использовать F(X)->N (требование left-unique при этом автоматически подразумевается) для однозначных последовательностей (или F(X)->set<N> для последовательностей, где одни и те же элементы используются несколько раз) и использовать автоматическое восстановление F(N)->X из F(X)->N,
вместо того, чтобы задавать F(N)->X, а потом пытаться доказать, что эта функция полная справа.
Здравствуйте, DarkGray, Вы писали:
S>>И последовательность, определенная многозначным отображением есть последовательность подмножеств, которая записывается, например следующим образом:
DG>это странный вывод. DG>многозначное отображение X->Nat есть обычное отображение, которое можно отразить и получить Nat->X (при этом если X->Nat было right-unique, то Nat->X будет left-unique), то это даст последовательность.
Читаем в определении:
Многозначным отображением из множества X в Y называется всякое отображение F : X -> 2^Y, где 2^Y — совокупность всех подмножеств множества Y.
Заменяем Y на Nat, получаем:
Многозначным отображением из множества X в Nat называется всякое отображение F : X -> 2^Nat, где 2^Nat — совокупность всех подмножеств множества Nat.
Область значений многозначного отображения является множество. Никакой мистики нет.
Т.е. если ты рассмотришь функцию X -> 2^Nat, то она будет отображать элементы множества на множества.
Так можно записывать последовательность? Да. Но такая запись не является достаточно хорошей что бы определить последовательность. Например, возьмем следующее многозначное отображение Bool->Nat:
F'(false) -> {0, 1, 2}
F'(true) -> {2, 3, 4}
В нем ничего плохого нет. Но последовательность, построенная на таком отображении будет хромать на две ноги, т.к. на месте 2 должно быть два значения из Bool. Но все будет нормально, если определять последовательность подмножеств Bool.
Аккуратно только надо обращаться с элементами и называть вещи своими именами. Не можем мы раскрыть внутренние скобки и записать все подряд. Конечно сможем, но никакой связи такие последовательности иметь не будут.
DG>Свойство, чтобы в Nat не было дырок желательно, но не является необходимым. Nat с "дырками" можно еще раз отобразить уже в Nat без "дырок".
Как сказано в определении, областью значений является множество всех подмножеств, а не само множество.
DG>с точки зрения математики здесь всё корректно, а вот с точки зрения реальных алгоритмов уже не всегда ("затягивание" дырок может выйти за допустимое кол-во шагов)
С точки зрения математики все некорректно.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>В принципе, я вижу свет в конце тоннеля — если мы скажем, что бесконечной последовательностью является S>
S>сюрьективное многозначное отображение произвольного множества элементов на множество натуральных чисел,
S>а конечной последовательностью — S>
S>сюрьективное многозначное отображение произвольного множества элементов на множество индексов {i: i ∈ ℕ, i ≤ Length}
S>, то всё бы начало сходиться. S>Но, во-первых, это определение сильно отличается от предложенного DG, а во-вторых, оно один хрен не совпадает с тем, чем пользуются все остальные люди.
Кажется я понял, свет действительно там проблескивает. Только больно сложно оперировать таким определением, если надстроить еще пару этажей (например начать обсуждать сходимость такой конструкции), то свет потухнет. Во всяком случае, давать такую хрень в первом семестре будет равноценно геноциду.
Здравствуйте, igna, Вы писали:
I>В статьях про "Immutable object" или про "Неизменяемый объект" в Википедии, во всех примерах речь идет о типах, все экземпляры которых неизменяемы, хотя согласно определениям данным в начале статей i в примере ниже является неизменяемым объектом:
I>
I>int const i = 123;
I>
I>Так ли это, можно ли назвать i здесь immutable?
Любой объект в программе который ты намеренно не будешь изменять — будет неизменяемым объектом!
S> Да. Но такая запись не является достаточно хорошей что бы определить последовательность.
согласен. и это есть хорошо , если происходить специфицирование в понимании двойственности: что то, что мы считаем хорошим, не всегда является хорошим на самом деле.
если специфицировать F(X)->N, то происходит несколько автоматических перепроверок корректности спецификации.
если специфицировать F(N)->X, то вся корректность держится на единственном доказательстве, что эта функция полная справа.
соответственно, первое задание более устойчивое — ряд ошибок автоматически выявляются на более поздних этапах, второе задание — неустойчивое, допущенная ошибка больше никогда не проявляется, и лишь скрыто пакостит.
S>> Да. Но такая запись не является достаточно хорошей что бы определить последовательность.
DG>согласен. и это есть хорошо , если происходить специфицирование в понимании двойственности: что то, что мы считаем хорошим, не всегда является хорошим на самом деле. DG>если специфицировать F(X)->N, то происходит несколько автоматических перепроверок корректности спецификации.
И добавляются новые ошибки, более критичные к возможности построения последовательности.
DG>если специфицировать F(N)->X, то вся корректность держится на единственном доказательстве, что эта функция полная справа.
Последовательность, заданная такой функцией будет корректна в любом случае, вне зависимости от свойств функции. А что до дополнительных свойств этой последовательности — так это дело десятое.
DG>соответственно, первое задание более устойчивое — ряд ошибок автоматически выявляются на более поздних этапах, второе задание — неустойчивое, допущенная ошибка больше никогда не проявляется, и лишь скрыто пакостит.
Первое задание не всегда корректное. Второе — всегда.
DG>>соответственно, первое задание более устойчивое — ряд ошибок автоматически выявляются на более поздних этапах, второе задание — неустойчивое, допущенная ошибка больше никогда не проявляется, и лишь скрыто пакостит. S>Первое задание не всегда корректное. Второе — всегда.
корректность того, что все элементы исходной последовательности X перебираются в результате последовательности — волнует больше, чем корректность работы самой последовательности.
в частности в задачах обеспечения безопасности, надежности и т.д., т.к. понятно как можно защититься от некорректной последовательности, но не понятно как защитится от некорректности полноты перебора.