Что такое конкатенация в математике
Конкатенация как математический оператор
Тaк как здесь грозит зачистка, открою дискуссию тут…
Автор видео для получения числа «10958»
В листингах часто приходится громоздить «x = x * 10 + n» или «x = (x
Alikberov
> P.S.: А что Вы думаете?
Все операторы нужны.
Все операторы важны.
> применил нестандартный трюк, с которым программисты имеют дело сплошь и рядом.
Тем самым он нарушил условия задачи?
Alikberov
> P.S.: А что Вы думаете?
Я ничерта не понимаю в математике, но мне кажется, что это ни разу не алгебраическая операция и толку от неё не будет. С таким же успехом можно ввести оператор перестановки цифр местами или переворот цифры чтобы из 6 получать 9 и наоборот.
RroRhBad
> Я ничерта не понимаю в математике, но мне кажется, что это ни разу не
> алгебраическая операция и толку от неё не будет. С таким же успехом можно
> ввести оператор перестановки
Ты явно недооцениваешь скоуп современной алгебры 🙂
https://en.wikipedia.org/wiki/Concatenation#Algebraic_properties
Zegalur
> Ты явно недооцениваешь скоуп современной алгебры 🙂
Пора писать диссертацию по переворачиванию девятки.
RroRhBad
> Пора писать диссертацию по переворачиванию девятки.
Этo тоже работает:
«5» vs «2» === «101» vs «010»;
«9» vs «6» === «1001» vs «0110».
Прослеживается инверсия «5» и «9» в «2» и «6» так же, как и их графическое переворачивание…
RroRhBad
> Пора писать диссертацию по переворачиванию девятки.
Ну на курсовую темы около этого можно генерировать до бесконечности. Например:
«Конечно ли множество простых чисел, которые остаются простыми после переворачивания 9-к и 6-к?»
Конкатенация числа и цифры это же просто f(x,y)=10*x+y
Два произвольных числа чуть сложнее, но смысл тот же.
Как видно операцию легко притянуть к произвольной системе исчисления, т.е. даже можно продолжать относится к числам как к числам а не строкам при любой базе.
Немного покопаться и теорем настрогать можно только в путь. Если уже не.
Есть даже такая шняга:
https://en.wikipedia.org/wiki/Actuarial_notation
Как раз недавно хотел вбросить тему про конкатенацию. Правда, немного про другое. Но раз так удачно стеклось, то вбросим здесь.
Добиться сего можно следующими постулатами:
— в дополнение к множеству символов, вводится множество «минус-символов». Каждому символу, условно говоря, соответствует символ с таким же кодом, но отрицательным (в том числе символу с кодом 0). Обозначим символ «минус а» записью «
a) == a.
— строка может состоять как из «плюс» символов, так и «минус» символов, в любой комбинации, но:
— комбинация a
Введённое таким образом отрицание и вычитание строк, как нетрудно убедиться, обладает всеми интересующими нас свойствами.
Алгебраическая конкатенация и её возможности по переводу чисел между системами счисления
Алгебраическая конкатенация
Для начала, еще раз, распишем, что такое «Алгебраическая конкатенация».
Для примера возьмем число 10958 и представим его с операцией конкатенации, а именно: 1‖0‖9‖5‖8 = (((1 * 10 + 0) * 10 + 9) * 10 + 5) * 10 + 8.
Т.е операция «конкатенации» это: a ‖ b = (a * 10) + b; Но 10 — это «хитрое» число… Это число следующие за максимальным в системе счисления, ну т.е. это просто основание системы счисления т.е. общий вид такой:
a ‖ b = (a * m) + b, где m – основание системы счисления представленное в обозначении самой системы.
Но такое определение мне не очень нравится, ибо m больше чем возможные числа внутри системы. Давайте сделаем чуть хитрее.
, где m_1 — это целое число означающее 1 в системе счисления, а m^k — основание системы счисления. Вот теперь получилось красиво с точки зрения определения, но
a ‖ b = (a * 10) + b – легче для восприятия.
Давайте, на всякий случай, проверим, что действительно это работает и пересчитаем описанные выше операции на 10958.
Двоичная: 10 1010 1100 1110 = 1‖0‖1‖0‖1‖0‖1‖1‖0‖0‖1‖1‖1‖0 = ((((((((((((1 * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 1) * 10 + 0) * 10 + 0) * 10 + 1) * 10 + 1) * 10 + 1) * 10 + 0
Восьмеричная: 25316 = 2‖5‖3‖1‖6 = (((2 * 10 + 5) * 10 + 3) * 10 + 1) * 10 + 6
Шестнадцатеричная 2ACE = 2‖A‖C‖E = ((2 * 10 + A) * 10 + C) * 10 + E
И тут кроется собственно фокус быстрого перевода чисел из одно системы счисления в другую.
Причем на ней сохраняются свойства обычной конкатенации:
1) Операция конкатенации неассоциативна.
То есть, если нужно выполнить конкатенацию трёх цифр, то от расстановки скобок результат изменится: ( 1 ‖ 2) ‖ 3 = 123, и в то же время 1 ‖ ( 2 ‖ 3 ) = 33.
2) Операция конкатенации некоммутативна.
В самом деле, wiki ‖ media = wikimedia, но media ‖ wiki = mediawiki ≠ wikimedia. От перестановки операндов меняется результат операции, что и означает её некоммутативность.
3) Пустое слово — ε, — является нейтральным элементом (единицей) операции конкатенации.
То есть, если ε— пустое слово, то для любого слова α выполнено равенство: ε ‖ a = a ‖ ε = a
4) Длина (количество букв) конкатенации слов равна сумме длин операндов:
|α ‖ β| = |α| + |β|.
Классический способ смены системы счисления
Но для начала рассмотрим классический способ перевода чисел из десятичной системы в восьмеричную. Для это используется операция деления и взятие остатка от деления.
Для примера возьмем 672 и переведем его восьмеричную систему счисления.
А перевод числа 934 в шестнадцатеричную систему счисления выглядит так.
Количество тактов по расчету чисел здесь довольно больше.
Более того перевод целого числа в систему счисления с новым основанием всегда делается через десятичную систему счисления. Т.е. число из исходной системы счисления загоняем в десятичное, а потом это число из десятичное систему счисления переводим в финальную систему счисления.
Как-то очень муторно…
Есть конечно таблицы триад и тетрад. Которые позволяют переводить числа из двоичной системы счисления в восьмеричную и шестнадцатеричную. Но это всё.
Смена системы счисления через алгебраическую конкатенацию
Вчера удалось понять, что операция «алгебраической конкатенации» позволяет нам упростить перевод до базового умножения. И переводить из любой системы счислению в любую другую без промежуточного звена, но нам потребуется пара таблиц-представлений.
Таблица 1 – представление цифр в разных системах счисления:
По горизонтали мы видим здесь представление числа в разных система счисления, а по вертикали указана основание системы счисления.
Далее распишем как выглядят основания одной системы счисления в другой системе счисления. Т.е. размерность системы в представлении другой системы. Например, основание десятичной системы счисления в шестнадцатеричной выглядит так:
Таблица 2 – множители основания системы в разных система счисления.
По горизонтали здесь исходная система счисления, а по вертикали – та, в которую хотим перевести.
Получается, чтобы перевести число 934 из десятичной системы счисления в шестнадцатеричную мы просто берем числа из таблицы.
9‖3‖4
= (9 * 10 + 3) * 10 + 4 — запись в десятичной системе
= (9 * A + 3) * A + 4 — здесь и далее уже шестнадцатеричная система
= (5A + 3) * A + 4
= 5D * A + 4
= 3A2 + 4
= 3A6
Возьмем еще одно число, на этот раз в двоичной системе счисления 1101011, и попробуем получить восьмеричную, потом десятичную и обратно в двоичную
1101011
= 1‖1‖0‖1‖0‖1‖1 — запись в двоичной системе
= (((((1 * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 1 — запись в двоичной системе
= (((((1 * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 1 — восьмеричная система
= 153 — восьмеричная система
= 1‖5‖3
= (1 * 10 + 5) * 10 + 3 — восьмеричная система
= (1 * 8 + 5) * 8 + 3 – в десятичной системе
= 107 – в десятичной системе
= 1‖0‖7 – в десятичной системе
= (1 * 10 + 0) * 10 + 7 – в десятичной системе
= (1 * 1010 + 0) * 1010 + 111- запись в двоичной системе
= 1101011 — запись в двоичной системе.
Собственно, этим можно заниматься весь день.
Тут нужно понимать, что операции, которые мы выполним над это строкой уже делаются в указанной системе счисления, поэтому и результат будет отличаться.
Вывод
По сути мы получили универсальную систему перевода целых чисел. В которой не нужно ни деление и взятие остатков. И даже перевода во вспомогательную систему счисления.
Но нужно будет подумать над дробной частью, что-то сходу она мне не поддалась…
Я поискал в сети способы перевода одной системы в другую, но что-то везде всё упирается во взятие остатков, а прямого перевода через умножение я так и не нашел. Может плохо искал?
Ведь по факту, с точки зрения визуального представление, — это просто смещение числа по разрядам и всё… Странно как-то, что нет описания такого просто решения… Ибо больше напоминает математический фокус, чем что-то новое и необычное. В чем я не прав? Жду ваших замечаний.
От алгебры конкатенации к позиционной алгебре
Введение
В серии статей о задаче Танежи, описывалась алгебраическая операция конкатенация.
Для решения задачи Танежи, один математик предложил ввести операцию конкатенации т.е. склейки цифр в числа. И выражалась она в таком виде или
Заинтересовавшись, я решил исследовать тему, и пришел к выводу что конкатенация является свойством операции позиционного сложения, а не отдельной операцией. В этой статье будет мое развитие некоторых выводов из предыдущих статей.
Автор статьи «Алгебраическая конкатенация. » описывает операцию конкатенации какгде – основание системы, или в более общем виде:
Перечисляет свойства операции конкатенации:
Пустое слово — ε, — является нейтральным элементом единицей операции конкатенации. То есть, если ε — пустое слово, то для любого слова α выполнено равенство: ε ‖ a = a ‖ ε = a
Длина количество букв конкатенации слов равна сумме длин операндов: |α ‖ β| = |α| + |β|
В обсуждении статьи, пользователь @maximw указывает что уравнение перестает работать в случае и приводит уравнение решающее эту проблему для системы счисления или в более общем виде для всех систем счисления:
где — основание системы, — разряд числа
Пусть далее определение разрядности числа будет описано через
0 \\ 1, n = 0 \end
Еще раз пройдемся по свойствам операции. Т.к. мы выходим из области теории множеств в алгебру, то имеет место смена определений.
Операция ассоциативна, очередь применения не имеет значения.
Операция некоммутативна, что исходит от позиционной природы операции
Если принять аналог пустого слова как то он имеет разряд Т.е.
Тут имеет смысл о разряде результата а не словах. И да, разряд результата операции есть сумма разрядов его операндов
Далее я исследую операцию предполагая что конкатенация и сама идея склеивания цифр, это свойства сложения чисел с применением позиционных коэффициентов системы счисления.
Смена понятия и символа
В дальнейшем понятие операции будет расширятся, и применяемый в последних статьях символ будет неудобен. «Новый» символ и сейчас применяется для операций конкатенации в текущем ее виде. Далее я буду называть это операцию, операцией позиционного сложения.
Позиционное сложение
Учитывая исправления и уточнения, операция выражается через следующее тождество.
Пара примеров:
Тут и далее примеры используют систему исчисления с базой 10, но расчеты верны для всех систем счисления.
Исследуя новую операцию я решил посмотреть что будет если я представлю выражения и как . Т.к. квадраты этих чисел и структуры похожие на позиционные преобразования их корней. Сперва это вылилось в формулу:
Эта формула быстро перестала работать уже на квадрате числа . Но сама идея с позиционными коэффициентами, казалась обнадеживающей. После работой над квадратом числа формула приобрела вид
Потом оказалось что операнды не обязательно должны быть равны :). Вот что получилось в итоге:
Найденная формула оказалось эволюцией элементарного алгебраического тождества
Пример:
Бином Ньютона
Для закрепления предыдущего результата, попробуем подставить позиционный коэффициент в бином Ньютона.
И это работает:
Индуктивный вывод что операция позиционного сложения имеет те же алгебраические свойства что и операция сложения, с поправкой на позиционные коэффициенты и отсутствие свойства коммутативности.
Позиционное вычитание
Когда речь шла о конкатенации, мы могли предположить что операция вычитания была бы примерно такого вида: Не понятно правда как бы это работало будь справа Но все прозаичнее, и я буду использовать ту же формулу что и для сложения только с другим знаком:
Пример:
Думается достаточным доказательством что вычитание работает именно так, будет тот же результат применяя разницу квадратов. Алгебраические тождества себя отлично показали при сложении, и я ожидаю что тут будет тоже самое.
Да, это так и есть:
Я бы сказал что число противоположно числу в контексте не всего множества действительных чисел, а для отрезка между и основанием системы счисления в степени разряда числа ( ) со скаляром Т.е. противоположно в отрезке
Результат позиционного вычитания это число противоположное числу в отрезке
Вывод
Может оказаться что занимательные свойства чисел, связанные с перестановкой цифр или иные экзотические свойства несут в себе больше математики чем считалось. В целом выводы предлагаю делать сообществу. Я лишь надеюсь что мои выкладки правильны, несут в себе пользу и не слишком наивны.
Конкатенация
Смотреть что такое «Конкатенация» в других словарях:
КОНКАТЕНАЦИЯ — Сцепление операция склеивания объектов линейной структуры, обычно строк. Например, конкатенация слов микро и мир даст слово микромир Словарь бизнес терминов. Академик.ру. 2001 … Словарь бизнес-терминов
КОНКАТЕНАЦИЯ — [лат. concatenatio присоединение цепями, связь, сцепление] 1) инф. операция соединения таков в одну цепочку; серия взаимозависимых вещей или событий; 2) филол. порядок следования понятий и слов, их обозначающих, в высказывании (предложении);… … Словарь иностранных слов русского языка
конкатенация — связь, соединение, сочленение, сцепление. Ant. разъединение, размежевание Словарь русских синонимов … Словарь синонимов
конкатенация — Конкатенция = размещение двух или более объектов непосредственно друг за другом. Например, «treehouse» это конкатенция слов «tree» и «house», которые размещены друг за другом. [http://www.rfcmd.ru/glossword/1.8/index … Справочник технического переводчика
Конкатенация — (лат. concatenatio «присоединение цепями; сцепление») операция склеивания объектов линейной структуры, обычно строк. Например, конкатенация слов «микро» и «мир» даст слово «микромир». Содержание 1 В математике 1.1 Свойства конкатенации … Википедия
конкатенация — конкатен ация, и … Русский орфографический словарь
конкатенация — Syn: связь, соединение, сочленение, сцепление Ant: разъединение, размежевание … Тезаурус русской деловой лексики
конкатенация контейнеров — Метод, позволяющий адаптировать существующий набор контейнеров с фиксированной емкостью, для передачи сверхбольших потоков данных за счет объединения нескольких последовательно передаваемых однотипных контейнеров. Составной контейнер может… … Справочник технического переводчика
конкатенация речевых фрагментов — Способ сборки осмысленных речевых фраз из заранее записанных голосовых фрагментов. [Л.М. Невдяев. Телекоммуникационные технологии. Англо русский толковый словарь справочник. Под редакцией Ю.М. Горностаева. Москва, 2002] Тематики электросвязь,… … Справочник технического переводчика
конкатенация строк — объединение строк в цепочку — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы объединение строк в цепочку EN line concatenation … Справочник технического переводчика