Кортеж (информатика)

Поделись знанием:
Перейти к: навигация, поиск

Кортеж — упорядоченный набор фиксированной длины.





В математике

Пусть даны множества <math>A_1, A_2, \ldots, A_n</math>, не обязательно различные.

Тогда корте́ж длины n[1][2], упорядоченный набор длины n[1], упорядоченный n-набор[2] или n-ка[1][3] — упорядоченная последовательность из n элементов <math>x_1, x_2, \ldots, x_n,</math> где <math>x_i\in A_i</math> для <math>1 \leqslant i \leqslant n.</math> Кортеж обозначается перечислением координат в угловых или круглых скобках[1]:

<math>\langle x_1, x_2, \ldots, x_n\rangle</math>

или

<math>(x_1, x_2, \ldots, x_n).</math>

Элемент <math>x_i</math> называется iкоординатой[1][4] (проекцией[2], компонентой[2][4]) кортежа <math>\langle x_1, x_2, \ldots, x_n\rangle.</math>

Число n называют длиной или размерностью кортежа[2].

Два кортежа равны, если равны их длины и соответствующие элементы[2][4]:

<math>\langle a_1,\ldots,a_n\rangle = \langle b_1,\ldots,b_n\rangle,</math> если <math>a_i=b_i, i=\overline{1,n}.</math>

Пример кортежа — арифметический вектор[2].

Декартово произведение n множеств — множество всех кортежей длины n, координаты которых взяты из этих множеств[1][5][6]:

<math>A_1\times\ldots\times A_n = \{\langle x_1,\ldots, x_n\rangle\mid x_i\in A_i,i=\overline{1,n}\}.</math>

Кортежи длины 2, 3, 4, 5, … также носят названия «упорядоченная пара», «упорядоченная тройка», «упорядоченная четвёрка», «упорядоченная пятёрка» и т. д.[2]

Определения в теории множеств

В рамках теории множеств кортежи можно индуктивно поставить в соответствие множествам[1][7][8], например, следующим образом[1][7]:

  • <math>\langle\rangle\rightleftharpoons\emptyset,</math>
  • <math>\langle x_1\rangle\rightleftharpoons x_1,</math>
  • <math>\langle x_1,x_2\rangle\rightleftharpoons \{\{x_1\},\{x_1,x_2\}\},</math>
  • <math>\langle x_1,x_2,x_3\rangle\rightleftharpoons \langle\langle x_1,x_2\rangle,x_3\rangle,</math>
  • <math>\langle x_1,x_2,x_3,x_4\rangle\rightleftharpoons \langle\langle x_1,x_2,x_3\rangle,x_4\rangle, \ldots</math>
  • <math>\langle x_1,\ldots,x_n\rangle\rightleftharpoons \langle\langle x_1,\ldots,x_{n-1}\rangle,x_n\rangle.</math>

Определение других объектов через кортежи

Многие математические объекты формально определяются как кортежи. Например, ориентированный граф определяется как пара <math>\langle V,E\rangle,</math> где V — это множество вершин, а E — подмножество пар в <math>V\times V,</math> соответствующих дугам графа[9]. Точка в n-мерном пространстве действительных чисел определяется как кортеж длины n, составленный из элементов множества действительных чисел.

Ориентированный мультиграф со множеством вершин V, множеством дуг E и отношением инцидентности <math>P \subseteq V\times E\times V</math> может быть определён как упорядоченная тройка <math>\langle V,E,P\rangle,</math> причём <math>\langle a,e,b\rangle\in P</math> тогда и только тогда, когда дуга e выходит из вершины a и заходит в вершину b[10].

В программировании

В некоторых языках программирования, например, Python или ML, кортеж — особый тип данных. В языке Python кортеж (англ. tuple) отличается от списка тем, что элементы кортежа нельзя изменять.

a = (1, 2, 3, 2)
print a[1]
a[1] = 5 #Ошибка

Эта программа на Python 2.7, использующая кортеж a, выведет ошибку в 3-й строке: TypeError: 'tuple' object does not support item assignment.

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

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

В языке C++ поддержка кортежей реализована как шаблон класса std::tuple[11] (начиная с C++11[12]) и в библиотеке Boost Tuple Library[13].

Кортеж является стандартным типом в платформе .NET начиная с версии 4.0[14].

В базах данных

В реляционных базах данных кортеж — это элемент отношения. Для N-арного отношения кортеж представляет собой упорядоченный набор из N значений, по одному значению для каждого атрибута отношения.

Напишите отзыв о статье "Кортеж (информатика)"

Примечания

  1. 1 2 3 4 5 6 7 8 Судоплатов, Овчинникова, 2002, с. 15.
  2. 1 2 3 4 5 6 7 8 Белоусов, Ткачев, 2004, с. 39.
  3. Англо-русский словарь математических терминов, 1994.
  4. 1 2 3 Виленкин, 1975, с. 75.
  5. Белоусов, Ткачев, 2004, с. 39-40.
  6. Кормен, Лейзерсон, Ривест, Штайн, 2005, с. 1206.
  7. 1 2 Hrbacek, Jech, 1999, p. 17-18.
  8. Кормен, Лейзерсон, Ривест, Штайн, 2005, с. 1206-1207.
  9. Кормен, Лейзерсон, Ривест, Штайн, 2005, с. 1213.
  10. Судоплатов, Овчинникова, 2002, с. 109.
  11. [cplusplus.com/reference/tuple/ <tuple>]. C++ Reference.
  12. [en.cppreference.com/w/cpp/utility/tuple std::tuple]. cppreference.com.
  13. [www.boost.org/doc/libs/1_54_0/libs/tuple/doc/tuple_users_guide.html The Boost Tuple Library — 1.54.0]. Boost C++ Libraries.
  14. [msdn.microsoft.com/ru-ru/library/system.tuple.aspx Tuple — класс]. MSDN.

Литература

  • Судоплатов С. В., Овчинникова Е. В. Элементы дискретной математики: Учебник. — М.: ИНФРА-М, Новосибирск: Издательство НГТУ, 2002. — 280 с. — (Серия «Высшее образование»). ISBN 5-16-000957-4 (ИНФРА-М), ISBN 5-7782-0332-2 (НГТУ)
  • Белоусов А. И., Ткачев С. Б. Дискретная математика: Учебник для вузов / Под редакцией В. С. Зарубина, А. П. Крищенко. — 3-е издание, стереотипное. — М.: Издательство МГТУ им. Н. Э. Баумана, 2004. — 744 с. — ISBN 5-7038-1769-2.
  • Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн, Клиффорд. Алгоритмы: построение и анализ = Introduction to Algorithms. — 2-е издание. — М.: Издательский дом «Вильямс», 2005. — 1296 с. — ISBN 5-8459-0857-4.
  • Н. Я. Виленкин. Популярная комбинаторика. — М.: Наука, 1975.
  • Англо-русский словарь математических терминов / Под ред. П. С. Александрова. — 2-е, исправл. и дополн. изд.. — М.: Мир, 1994. — 416 с. — ISBN 5-03-002952-4.
  • Karel Hrbacek, Thomas Jech. Introduction to Set Theory. — Third edition, revised and expanded. — 1999. — ISBN 0-8247-7915-0.

Ссылки

  • [www.opennet.ru/docs/RUS/diveinto_python/diveinto_python-python.html.gz#odbchelper_tuple_html В глубь языка Python: 1.9. Кортежи]


Отрывок, характеризующий Кортеж (информатика)

– Посадите, посадите, – сказал Тушин. – Подложи шинель, ты, дядя, – обратился он к своему любимому солдату. – А где офицер раненый?
– Сложили, кончился, – ответил кто то.
– Посадите. Садитесь, милый, садитесь. Подстели шинель, Антонов.
Юнкер был Ростов. Он держал одною рукой другую, был бледен, и нижняя челюсть тряслась от лихорадочной дрожи. Его посадили на Матвевну, на то самое орудие, с которого сложили мертвого офицера. На подложенной шинели была кровь, в которой запачкались рейтузы и руки Ростова.
– Что, вы ранены, голубчик? – сказал Тушин, подходя к орудию, на котором сидел Ростов.
– Нет, контужен.
– Отчего же кровь то на станине? – спросил Тушин.
– Это офицер, ваше благородие, окровянил, – отвечал солдат артиллерист, обтирая кровь рукавом шинели и как будто извиняясь за нечистоту, в которой находилось орудие.
Насилу, с помощью пехоты, вывезли орудия в гору, и достигши деревни Гунтерсдорф, остановились. Стало уже так темно, что в десяти шагах нельзя было различить мундиров солдат, и перестрелка стала стихать. Вдруг близко с правой стороны послышались опять крики и пальба. От выстрелов уже блестело в темноте. Это была последняя атака французов, на которую отвечали солдаты, засевшие в дома деревни. Опять всё бросилось из деревни, но орудия Тушина не могли двинуться, и артиллеристы, Тушин и юнкер, молча переглядывались, ожидая своей участи. Перестрелка стала стихать, и из боковой улицы высыпали оживленные говором солдаты.
– Цел, Петров? – спрашивал один.
– Задали, брат, жару. Теперь не сунутся, – говорил другой.
– Ничего не видать. Как они в своих то зажарили! Не видать; темь, братцы. Нет ли напиться?
Французы последний раз были отбиты. И опять, в совершенном мраке, орудия Тушина, как рамой окруженные гудевшею пехотой, двинулись куда то вперед.
В темноте как будто текла невидимая, мрачная река, всё в одном направлении, гудя шопотом, говором и звуками копыт и колес. В общем гуле из за всех других звуков яснее всех были стоны и голоса раненых во мраке ночи. Их стоны, казалось, наполняли собой весь этот мрак, окружавший войска. Их стоны и мрак этой ночи – это было одно и то же. Через несколько времени в движущейся толпе произошло волнение. Кто то проехал со свитой на белой лошади и что то сказал, проезжая. Что сказал? Куда теперь? Стоять, что ль? Благодарил, что ли? – послышались жадные расспросы со всех сторон, и вся движущаяся масса стала напирать сама на себя (видно, передние остановились), и пронесся слух, что велено остановиться. Все остановились, как шли, на середине грязной дороги.
Засветились огни, и слышнее стал говор. Капитан Тушин, распорядившись по роте, послал одного из солдат отыскивать перевязочный пункт или лекаря для юнкера и сел у огня, разложенного на дороге солдатами. Ростов перетащился тоже к огню. Лихорадочная дрожь от боли, холода и сырости трясла всё его тело. Сон непреодолимо клонил его, но он не мог заснуть от мучительной боли в нывшей и не находившей положения руке. Он то закрывал глаза, то взглядывал на огонь, казавшийся ему горячо красным, то на сутуловатую слабую фигуру Тушина, по турецки сидевшего подле него. Большие добрые и умные глаза Тушина с сочувствием и состраданием устремлялись на него. Он видел, что Тушин всею душой хотел и ничем не мог помочь ему.
Со всех сторон слышны были шаги и говор проходивших, проезжавших и кругом размещавшейся пехоты. Звуки голосов, шагов и переставляемых в грязи лошадиных копыт, ближний и дальний треск дров сливались в один колеблющийся гул.
Теперь уже не текла, как прежде, во мраке невидимая река, а будто после бури укладывалось и трепетало мрачное море. Ростов бессмысленно смотрел и слушал, что происходило перед ним и вокруг него. Пехотный солдат подошел к костру, присел на корточки, всунул руки в огонь и отвернул лицо.
– Ничего, ваше благородие? – сказал он, вопросительно обращаясь к Тушину. – Вот отбился от роты, ваше благородие; сам не знаю, где. Беда!
Вместе с солдатом подошел к костру пехотный офицер с подвязанной щекой и, обращаясь к Тушину, просил приказать подвинуть крошечку орудия, чтобы провезти повозку. За ротным командиром набежали на костер два солдата. Они отчаянно ругались и дрались, выдергивая друг у друга какой то сапог.
– Как же, ты поднял! Ишь, ловок, – кричал один хриплым голосом.
Потом подошел худой, бледный солдат с шеей, обвязанной окровавленною подверткой, и сердитым голосом требовал воды у артиллеристов.
– Что ж, умирать, что ли, как собаке? – говорил он.
Тушин велел дать ему воды. Потом подбежал веселый солдат, прося огоньку в пехоту.
– Огоньку горяченького в пехоту! Счастливо оставаться, землячки, благодарим за огонек, мы назад с процентой отдадим, – говорил он, унося куда то в темноту краснеющуюся головешку.
За этим солдатом четыре солдата, неся что то тяжелое на шинели, прошли мимо костра. Один из них споткнулся.
– Ишь, черти, на дороге дрова положили, – проворчал он.
– Кончился, что ж его носить? – сказал один из них.
– Ну, вас!
И они скрылись во мраке с своею ношей.
– Что? болит? – спросил Тушин шопотом у Ростова.
– Болит.
– Ваше благородие, к генералу. Здесь в избе стоят, – сказал фейерверкер, подходя к Тушину.
– Сейчас, голубчик.
Тушин встал и, застегивая шинель и оправляясь, отошел от костра…
Недалеко от костра артиллеристов, в приготовленной для него избе, сидел князь Багратион за обедом, разговаривая с некоторыми начальниками частей, собравшимися у него. Тут был старичок с полузакрытыми глазами, жадно обгладывавший баранью кость, и двадцатидвухлетний безупречный генерал, раскрасневшийся от рюмки водки и обеда, и штаб офицер с именным перстнем, и Жерков, беспокойно оглядывавший всех, и князь Андрей, бледный, с поджатыми губами и лихорадочно блестящими глазами.
В избе стояло прислоненное в углу взятое французское знамя, и аудитор с наивным лицом щупал ткань знамени и, недоумевая, покачивал головой, может быть оттого, что его и в самом деле интересовал вид знамени, а может быть, и оттого, что ему тяжело было голодному смотреть на обед, за которым ему не достало прибора. В соседней избе находился взятый в плен драгунами французский полковник. Около него толпились, рассматривая его, наши офицеры. Князь Багратион благодарил отдельных начальников и расспрашивал о подробностях дела и о потерях. Полковой командир, представлявшийся под Браунау, докладывал князю, что, как только началось дело, он отступил из леса, собрал дроворубов и, пропустив их мимо себя, с двумя баталионами ударил в штыки и опрокинул французов.