Конкатенация: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Bezik (обсуждение | вклад) м откат правок 95.73.184.246 (обс.) к версии ·1e0nid· Метка: откат |
|||
(не показаны 52 промежуточные версии 41 участника) | |||
Строка 1: | Строка 1: | ||
'''Конкатена́ция''' (сцепле́ние) — операция склеивания объектов линейной структуры, обычно строк. Например, конкатенация слов «микро» и «мир» даст слово «микромир». |
'''Конкатена́ция''' ({{lang-la|concatenatio}} «присоединение цепями; сцепле́ние») — операция склеивания объектов линейной структуры, обычно [[Строковый тип|строк]]. Например, конкатенация слов «микро» и «мир» даст слово «микромир». |
||
== В математике == |
== В математике == |
||
'''Конкатенация''' — [[бинарная операция]], определённая на [[слово#В математике|словах]] данного [[алфавит#В математике|алфавита]]. |
'''Конкатенация''' — [[бинарная операция]], определённая на [[слово#В математике|словах]] данного [[алфавит#В математике|алфавита]]. Обозначения: |
||
* <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> \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> wiki \cdot media = wikimedia</math>, но <math> media \cdot wiki = mediawiki \neq wikimedia</math>: от перестановки [[Операнд|операндов]] меняется результат операции, что и означает её некоммутативность. |
||
* Пустое слово |
* [[Слово (формальный язык)|Пустое слово]] <math> \varepsilon</math> — является [[нейтральный элемент|нейтральным элементом]] (единицей) операции конкатенации. То есть, если <math> \varepsilon</math> — пустое слово, то для любого слова <math> \alpha</math> выполнено равенство: |
||
<center> |
<center> |
||
<math> |
<math> |
||
\varepsilon \cdot \alpha = \alpha \cdot \varepsilon = \alpha |
\varepsilon \cdot \alpha = \alpha \cdot \varepsilon = \alpha</math>. |
||
</center> |
</center> |
||
* Множество <math>A^* |
* Множество <math>A^*</math> всех слов в алфавите образует [[моноид]] (так называемый {{нп5|Свободный моноид|«свободный моноид»|en|Free monoid}}). |
||
* Множество <math>A^*\setminus \{\varepsilon\} |
* Множество <math>A^*\setminus \{\varepsilon\}</math> всех непустых слов в алфавите образует [[полугруппа|полугруппу]]. |
||
* [[Слово#В математике|Длина]] конкатенации слов равна сумме длин операндов: |
* [[Слово#В математике|Длина]] (количество букв) конкатенации слов равна сумме длин операндов: |
||
<center> |
<center> |
||
Строка 38: | Строка 41: | ||
</center> |
</center> |
||
=== Итерации === |
|||
=== Возведение в степень === |
|||
Операция конкатенации слов, подобно операции [[Умножение|умножения чисел]], порождает операцию '''возведения в степень'''. Пусть <math> \alpha |
Операция конкатенации слов, подобно операции [[Умножение|умножения чисел]], порождает операцию '''итерации''' (или '''возведения в степень'''). Пусть <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> 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>. |
||
Из соображений удобства и эффективности различают две формы операции конкатенации: |
Из соображений удобства и эффективности различают две формы операции конкатенации: |
||
# Модифицирующая конкатенация. Результат операции формируется в левом операнде. |
# Модифицирующая конкатенация. Результат операции формируется в левом операнде. |
||
# Немодифицирующая конкатенация. Результатом является новый объект, операнды остаются неизменными. |
# Немодифицирующая конкатенация. Результатом является новый объект, операнды остаются неизменными. |
||
== См. также == |
|||
{{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».
В случае , степень по определению полагается равной пустому слову, .
В информатике
[править | править код]Операция конкатенации определяется для типов данных, имеющих структуру последовательности (список, очередь, массив и ряд других). В общем случае, результатом конкатенации двух объектов и является объект , полученный поочерёдным добавлением всех элементов объекта , начиная с первого, в конец объекта .
Из соображений удобства и эффективности различают две формы операции конкатенации:
- Модифицирующая конкатенация. Результат операции формируется в левом операнде.
- Немодифицирующая конкатенация. Результатом является новый объект, операнды остаются неизменными.
См. также
[править | править код]int main()
{
printf("Hi");
return 0;
}
| Это заготовка статьи о программировании. Помогите Википедии, дополнив её. |
Это заготовка статьи по математике. Помогите Википедии, дополнив её. |
В статье не хватает ссылок на источники (см. рекомендации по поиску). |