Конкатенация: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м r2.7.1) (робот добавил: no:Konkatenering
м откат правок 95.73.184.246 (обс.) к версии ·1e0nid·
Метка: откат
 
(не показаны 53 промежуточные версии 42 участников)
Строка 1: Строка 1:
'''Конкатена́ция''' (сцепле́ние) — операция склеивания объектов линейной структуры, обычно строк. Например, конкатенация слов «микро» и «мир» даст слово «микромир».
'''Конкатена́ция''' ({{lang-la|concatenatio}} «присоединение цепями; сцепле́ние») — операция склеивания объектов линейной структуры, обычно [[Строковый тип|строк]]. Например, конкатенация слов «микро» и «мир» даст слово «микромир».


== В математике ==
== В математике ==
'''Конкатенация''' — [[бинарная операция]], определённая на [[слово#В математике|словах]] данного [[алфавит#В математике|алфавита]]. Если <math>\alpha=a_1 \ldots a_n\,</math> и <math>\beta=b_1\ldots b_m\,</math> слова в алфавите <math>A\,</math>, то конкатенацией слов <math> \alpha\, </math> и <math> \beta\, </math>, обозначемой <math> \alpha \cdot \beta\, </math>, будет слово <math> \gamma\, </math> в том же алфавите <math> A\, </math>, определяемое равенством
'''Конкатенация''' — [[бинарная операция]], определённая на [[слово#В математике|словах]] данного [[алфавит#В математике|алфавита]]. Обозначения:
* <math>A</math> — алфавит, набор букв;
* <math>\alpha</math>, <math>\beta</math>, <math>\gamma</math> — слова, составленные из букв;
* <math>a_1 \ldots a_n</math> и <math>b_1 \ldots b_m</math> — записанные подряд и пронумерованные буквы двух слов.
Если <math>\alpha=a_1 \ldots a_n</math> и <math>\beta=b_1\ldots b_m</math> — слова из алфавита <math>A</math>, то конкатенацией слов <math> \alpha</math> и <math> \beta</math>, которую обозначим в этой статье как <math> \alpha \cdot \beta</math>, будет слово <math> \gamma</math> из того же алфавита <math> A</math>, определяемое равенством


<center>
<center>
<math>
<math>
\gamma = \alpha\cdot\beta = a_1\ldots a_n b_1 \ldots b_m\,
\gamma = \alpha\cdot\beta = a_1\ldots a_n b_1 \ldots b_m</math>.
</math>.
</center>
</center>


Например, если <math> \alpha = media \,</math> и <math> \beta = wiki \,</math> слова в алфавите <math> A = \{a,b,c,\ldots,z\} \,</math>, содержащем все [[буква|буквы]] [[Латинский алфавит|латинского алфавита]], то
Например, если <math> \alpha = media</math> и <math> \beta = wiki</math> — слова из алфавита <math> A = \{a,b,c,\ldots,z\}</math>, содержащем все [[буква|буквы]] [[Латинский алфавит|латинского алфавита]], то


<center>
<center>
Строка 19: Строка 22:


=== Свойства конкатенации ===
=== Свойства конкатенации ===
* Операция конкатенации [[Ассоциативная операция|ассоциативна]].
* Операция конкатенации [[Ассоциативная операция|ассоциативна]]. То есть, если нужно выполнить конкатенацию трёх слов, то от расстановки скобок результат не изменится: <math> (wiki \cdot media) \cdot pedia = wikimediapedia </math>, и в то же время <math> wiki \cdot (media \cdot pedia) = wikimediapedia </math>.
* Операция конкатенации [[Коммутативная операция|некоммутативна]]. В самом деле, <math> wiki \cdot media = wikimedia\, </math>, но <math> media \cdot wiki = mediawiki \neq wikimedia\, </math>. От перестановки операндов меняется результат операции, что и означает её некоммутативность.
* Операция конкатенации [[Коммутативная операция|некоммутативна]]. В самом деле, <math> wiki \cdot media = wikimedia</math>, но <math> media \cdot wiki = mediawiki \neq wikimedia</math>: от перестановки [[Операнд|операндов]] меняется результат операции, что и означает её некоммутативность.
* Пустое слово, <math> \varepsilon\, </math>, является [[нейтральный элемент|нейтральным элементом]] (единицей) операции конкатенации. То есть, если <math> \varepsilon\, </math> — пустое слово, то для любого слова <math> \alpha\, </math> выполнено равенство:
* [[Слово (формальный язык)|Пустое слово]] <math> \varepsilon</math> — является [[нейтральный элемент|нейтральным элементом]] (единицей) операции конкатенации. То есть, если <math> \varepsilon</math> — пустое слово, то для любого слова <math> \alpha</math> выполнено равенство:


<center>
<center>
<math>
<math>
\varepsilon \cdot \alpha = \alpha \cdot \varepsilon = \alpha\, </math>.
\varepsilon \cdot \alpha = \alpha \cdot \varepsilon = \alpha</math>.
</center>
</center>


* Множество <math>A^*\,</math> всех слов в алфавите образует [[моноид]] (так называемая «[[свободная полугруппа]]»).
* Множество <math>A^*</math> всех слов в алфавите образует [[моноид]] (так называемый {{нп5|Свободный моноид|«свободный моноид»|en|Free monoid}}).
* Множество <math>A^*\setminus \{\varepsilon\}\,</math> всех непустых слов в алфавите образует [[полугруппа|полугруппу]].
* Множество <math>A^*\setminus \{\varepsilon\}</math> всех непустых слов в алфавите образует [[полугруппа|полугруппу]].
* [[Слово#В математике|Длина]] конкатенации слов равна сумме длин операндов:
* [[Слово#В математике|Длина]] (количество букв) конкатенации слов равна сумме длин операндов:


<center>
<center>
Строка 38: Строка 41:
</center>
</center>


=== Итерации ===
=== Возведение в степень ===
Операция конкатенации слов, подобно операции [[Умножение|умножения чисел]], порождает операцию '''возведения в степень'''. Пусть <math> \alpha\, </math> некоторое слово в алфавите <math> A\, </math>, а <math> n\, </math> [[Целые числа|целое]] неотрицательное число. Тогда <math>n\,</math>-ой степенью слова <math>\alpha\,</math>, обозначаемой <math>\alpha^n\,</math>, будет слово <math>\gamma\,</math> в том же алфавите <math>A\,</math>, определяемое равенством:
Операция конкатенации слов, подобно операции [[Умножение|умножения чисел]], порождает операцию '''итерации''' (или '''возведения в степень'''). Пусть <math> \alpha</math> — некоторое слово из алфавита <math> A</math>, а <math> n</math> — [[Целые числа|целое]] неотрицательное число. Тогда <math>n</math>-ой степенью слова <math>\alpha</math>, обозначаемой <math>\alpha^n</math>, будет слово <math>\gamma</math> в том же алфавите <math>A</math>, определяемое равенством:


<center>
<center>
Строка 49: Строка 52:
</math>
</math>
</center>
</center>
(повтор слова <math> \alpha</math> <math>n</math> раз). Пример: «a»<sup>3</sup>=«aaa».


В случае <math> n=0\, </math>, степень <math> \alpha^0\, </math> по определению полагается равной [[Слово#В математике|пустому слову]], <math> \varepsilon\, </math>.
В случае <math> n=0</math>, степень <math> \alpha^0</math> по определению полагается равной пустому слову, <math> \varepsilon</math>.


== В информатике ==
== В информатике ==
Операция '''конкатенации''' определяется для типов данных, имеющих структуру последовательности ([[Линейный список|список]], [[Очередь (компьютер)|очередь]], [[массив]] и ряд других). В общем случае, результатом конкатенации двух объектов <math>A\,</math> и <math>B\,</math> является объект <math>C = A\cdot B\,</math>, полученный поочерёдным добавлением всех элементов объекта <math>B\,</math>, начиная с первого, в конец объекта <math>A\,</math>.
Операция '''конкатенации''' определяется для [[Тип данных|типов данных]], имеющих структуру последовательности ([[Линейный список|список]], [[Очередь (программирование)|очередь]], [[Массив (программирование)|массив]] и ряд других). В общем случае, результатом конкатенации двух объектов <math>A</math> и <math>B</math> является объект <math>C = A\cdot B</math>, полученный поочерёдным добавлением всех элементов объекта <math>B</math>, начиная с первого, в конец объекта <math>A</math>.


Из соображений удобства и эффективности различают две формы операции конкатенации:
Из соображений удобства и эффективности различают две формы операции конкатенации:
# Модифицирующая конкатенация. Результат операции формируется в левом операнде.
# Модифицирующая конкатенация. Результат операции формируется в левом операнде.
# Немодифицирующая конкатенация. Результатом является новый объект, операнды остаются неизменными.
# Немодифицирующая конкатенация. Результатом является новый объект, операнды остаются неизменными.

== См. также ==
{{wiktionary|конкатенация}}
* [[Перебор по словарю]]


{{compu-prog-stub}}
{{compu-prog-stub}}
{{math-stub}}
{{math-stub}}
{{нет ссылок|дата=2011-12-21}}


[[Категория:Математические операции]]
[[Категория:Математические операции]]
[[Категория:Алгоритмы]]
[[Категория:Алгоритмы]]
[[Категория:Операции в программировании]]

[[bg:Конкатенация]]
[[de:Konkatenation (Listen)]]
[[en:Concatenation]]
[[es:Concatenación]]
[[fa:عمل الحاق (علوم کامپیوتر)]]
[[fr:Concaténation]]
[[gl:Concatenación]]
[[he:שרשור (מחרוזות)]]
[[nl:Concatenatie]]
[[no:Konkatenering]]
[[pl:Konkatenacja]]
[[pt:Concatenação]]
[[simple:Concatenation]]
[[sv:Konkatenering]]
[[tr:Concatenation]]
[[uk:Конкатенація]]
[[zh:串接]]

Текущая версия от 18:43, 6 февраля 2023

Конкатена́ция (лат. concatenatio «присоединение цепями; сцепле́ние») — операция склеивания объектов линейной структуры, обычно строк. Например, конкатенация слов «микро» и «мир» даст слово «микромир».

В математике

[править | править код]

Конкатенация — бинарная операция, определённая на словах данного алфавита. Обозначения:

  •  — алфавит, набор букв;
  • , ,  — слова, составленные из букв;
  • и  — записанные подряд и пронумерованные буквы двух слов.

Если и  — слова из алфавита , то конкатенацией слов и , которую обозначим в этой статье как , будет слово из того же алфавита , определяемое равенством

.

Например, если и  — слова из алфавита , содержащем все буквы латинского алфавита, то

.

Свойства конкатенации

[править | править код]
  • Операция конкатенации ассоциативна. То есть, если нужно выполнить конкатенацию трёх слов, то от расстановки скобок результат не изменится: , и в то же время .
  • Операция конкатенации некоммутативна. В самом деле, , но : от перестановки операндов меняется результат операции, что и означает её некоммутативность.
  • Пустое слово  — является нейтральным элементом (единицей) операции конкатенации. То есть, если  — пустое слово, то для любого слова выполнено равенство:

.

  • Множество всех слов в алфавите образует моноид (так называемый «свободный моноид»[англ.]).
  • Множество всех непустых слов в алфавите образует полугруппу.
  • Длина (количество букв) конкатенации слов равна сумме длин операндов:

.

Операция конкатенации слов, подобно операции умножения чисел, порождает операцию итерации (или возведения в степень). Пусть  — некоторое слово из алфавита , а  — целое неотрицательное число. Тогда -ой степенью слова , обозначаемой , будет слово в том же алфавите , определяемое равенством:

(повтор слова раз). Пример: «a»3=«aaa».

В случае , степень по определению полагается равной пустому слову, .

В информатике

[править | править код]

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

Из соображений удобства и эффективности различают две формы операции конкатенации:

  1. Модифицирующая конкатенация. Результат операции формируется в левом операнде.
  2. Немодифицирующая конкатенация. Результатом является новый объект, операнды остаются неизменными.