Алгоритм перемножування матриць

Нерозв'язана проблема інформатики:
Який алгоритм перемножування матриць є найшвидшим?
(більше нерозв'язаних проблем інформатики)

Оскільки множення матриць є настільки центральною операцією в багатьох чисельних алгоритмах, у те, щоби зробити алгори́тми перемно́жування ма́триць ефективними, було вкладено чимало праці. Застосування множення матриць в обчислювальних задачах зустрічаються в багатьох областях, включно з науковими обчисленнями[en] та розпізнаванням образів, і в, здавалося би, не пов'язаних задачах, таких як підрахунок шляхів графом.[1] Було розроблено багато різних алгоритмів для перемножування матриць на різних типах апаратного забезпечення, включно з паралельними та розподіленими системами, де обчислювальну працю розподілювано декількома процесорами (можливо, через мережу).

Безпосереднє застосування математичного означення множення матриць дає алгоритм, що для перемножування двох матриць n × n займає часу порядку n3нотації Ландау — Θ(n3)). Кращі асимптотичні межі часу, необхідного для перемножування матриць, були відомі від часів праці Страссена 1960 року, але досі не відомо, яким є оптимальний час (тобто, якою є складність цієї задачі).

Ітеративний алгоритм

За означенням множення матриць, якщо C = AB для матриці A розміру n × m та матриці B розміру m × p, то C є матрицею розміру n × p з елементами

.

З цього може бути побудовано простий алгоритм, який обходить циклами індекси i з 1 по n та j з 1 по p, обчислюючи наведене вище із застосуванням вкладеного циклу:

  • Вхід: матриці A та B
  • Нехай C буде матрицею відповідного розміру
  • Для i з 1 по n:
    • Для j з 1 по p:
      • Нехай sum = 0
      • Для k з 1 по m:
        • Встановити sum ← sum + Aik × Bkj
      • Встановити Cij ← sum
  • Повернути C

Цей алгоритм займає час Θ(nmp)нотації Ландау).[1] Поширеним спрощенням для цілей аналізу алгоритмів є вважати, що всі входи є квадратними матрицями розміру n × n, в разі чого час виконання становить Θ(n3), тобто, є кубічним.[2]

Поведінка кешу

Ілюстрація порядко́вого та постовпчикового порядку

Ці три цикли в ітеративному перемножуванні матриць можливо довільно переставляти між собою без впливу на правильність чи асимптотичну тривалість виконання. Проте цей порядок може мати значний вплив на практичну продуктивність через моделі доступу до пам'яті[en] алгоритму та використання ним кешу;[1] який порядок є кращим також залежить від того, чи зберігаються матриці в порядко́вому порядку[en], постовпчиковому, чи суміші обох.

Зокрема, в ідеалізованому випадку повністю асоціативного кешу, складеного з M байтів та b байтів на рядок кешу (тобто, M/b рядків кешу), наведений вище алгоритм є недооптимальним для A та B, що зберігаються в порядко́вому порядку. Коли n > M/b, кожна ітерація внутрішнього циклу (одночасного проходження рядком A та стовпчиком B) зазнає́ невлучання в кеш при отримуванні доступу до елементу B. Це означає, що цей алгоритм у найгіршому випадку зазнає Θ(n3) невлучань у кеш. Станом на 2010 рік швидкість пам'яті в порівнянні зі швидкістю процесорів є такою, що для матриць значного розміру в тривалості виконання домінують невлучання в кеш, а не фактичні обчислення.[3]

Оптимальним варіантом ітеративного алгоритму для A та B, що зберігаються в порядку рядків, є плиткова[en] версія, в якій матрицю неявно ділять на квадратні плитки розміру M на M:[3][4]

  • Вхід: матриці A та B
  • Нехай C буде матрицею відповідного розміру
  • Обрати розмір плитки T = Θ(M)
  • Для I з 1 по n кроками по T:
    • Для J з 1 по p кроками по T:
      • Для K з 1 по m кроками по T:
        • Перемножити AI:I+T, K:K+T та BK:K+T, J:J+T до CI:I+T, J:J+T, тобто:
        • Для i з I по min(I + T, n):
          • Для j з J по min(J + T, p):
            • Нехай sum = 0
            • Для k з K по min(K + T, m):
              • Встановити sum ← sum + Aik × Bkj
            • Встановити CijCij + sum
  • Повернути C

В ідеалізованій моделі кешу цей алгоритм зазнає лише Θ(n3/b M) невлучань у кеш; дільник b M становить декілька порядків на сучасних машинах, тож у тривалості виконання домінують фактичні обчислення, а не невлучання в кеш.[3]

Алгоритм «розділюй та володарюй»

Альтернативою до ітеративного алгоритму є алгоритм «розділюй та володарюй» для множення матриць. Він спирається на блокове розбиття

,

яке працює для всіх квадратних матриць, чиї розміри є степенями двійки, тобто, форми 2n × 2n для деякого n. Тепер добутком матриць є

що складається з восьми множень пар підматриць, з подальшим кроком додавання. Алгоритм «розділюй та володарюй» обчислює менші добутки рекурсивно, застосовуючи як основу скалярне множення c11 = a11b11.

Складність цього алгоритму як функції від n задається рекурентно як[2]

;
,

із враховуванням восьми рекурсивних викликів на матрицях розміру n/2, та Θ(n2) для поелементного підсумовування чотирьох пар отримуваних в результаті матриць. Застосування майстер-методу для рекурсій «розділюй та володарюй» показує, що ця рекурсія має розв'язок Θ(n3), такий же, як й ітеративний алгоритм.[2]

Неквадратні матриці

Варіант цього алгоритму, який працює для матриць довільних форм, і є швидшим на практиці,[3] розбиває матриці на дві замість чотирьох підматриць наступним чином.[5] Розбивання матриці тепер означає поділ її на дві частини рівного розміру, або якомога ближче до рівних розмірів у разі, якщо розміри є непарними.

  • Входи: матриці A розміру n × m, B розміру m × p.
  • Базовий випадок: якщо max(n, m, p) є нижчим за певний поріг, застосувати розмотану версію ітеративного алгоритму.
  • Рекурсивні випадки:
  • Якщо max(n, m, p) = n, розбити A горизонтально:
  • Інакше, якщо max(n, m, p) = p, розбити B вертикально:
  • Інакше, max(n, m, p) = m. Робити A вертикально та B горизонтально:

Поведінка кешу

Рівень невлучання в кеш в рекурсивного матричного множення є таким же, як і в плиткової[en] ітеративної версії, але, на відміну від того алгоритму, рекурсивний алгоритм є буферо-незалежним[en]:[5] він не має параметру налаштування, необхідного для досягнення оптимальної продуктивності кешу, і він добре поводиться в багатопрограмному[en] середовищі, де розміри кешу є фактично динамічними через те, що інші процеси займають його простір.[3] (Простий ітеративний алгоритм також є буферо-незалежним, але набагато повільнішим на практиці, якщо компонування матриць не пристосовано до алгоритму.)

Кількість невлучань у кеш, що зазнає́ цей алгоритм на машині з M рядками ідеально кешу розміру b байтів кожен, обмежено[5]:13

Підкубічні алгоритми

Найнижче ω, таке, що відомо, що множення матриць є в O(nω), відображене за часом.

Існують алгоритми, що забезпечують кращу тривалість виконання, ніж прямолінійні. Першим було відкрито алгоритм Штрассена, винайдений Фолькером Штрассеном 1969 року, який часто називають «швидким множенням матриць» (англ. "fast matrix multiplication"). Він ґрунтується на способі множення двох матриць 2 × 2, який вимагає лише 7 множень (замість звичайних 8), ціною декількох додаткових операції додавання та віднімання. Його рекурсивне застосування дає алгоритм з витратами на множення . Алгоритм Штрассена є складнішим та має нижчу чисельну стійкість у порівнянні з наївним алгоритмом,[6] але він є швидшим у випадках, коли n > 100 або близько того,[1] і зустрічається в декількох бібліотеках, таких як BLAS.[7] Він є дуже корисним для великих матриць над точними областями, такими як скінченні поля, де чисельна стійкість не є проблемою.

Поточний алгоритм O(nk) з найнижчим відомим степенем k є узагальненнями алгоритму Копперсміта — Вінограда від Франсуа ле Ґалля, яке має асимптотичну складність O(n2.3728639).[8] Алгоритм ле Ґалля та алгоритм Копперсміта — Вінограда, на якому він ґрунтується, є подібними до алгоритму Штрассена: винайдено спосіб множення двох матриць k × k менше ніж k3 множеннями, і цю методику застосовують рекурсивно. Проте сталий коефіцієнт, прихований нотацією Ландау, є настільки великим, що ці алгоритми є доцільними лише для матриць, що є завеликими для обробки на сучасних комп'ютерах.[9][10]

Оскільки будь-який алгоритм для перемножування двох матриць n × n має обробити всі 2n2 елементів, існує асимптотична нижня межа в Ω(n2) операцій. Рац довів нижню межу в Ω(n2 log(n)) для арифметичних схем з обмеженими коефіцієнтами над дійсними або комплексними числами.[11]

Кон та ін. помістили такі методи, як алгоритми Штрассена та Копперсміта — Вінограда, до зовсім відмінного контексту теорії груп, використавши трійки підмножин скінченних груп, які задовольняють властивості неперетинності, що називають властивістю потрійного добутку[en] (ВПД, англ. triple product property, TPP). Вони показали, що якщо сімейства вінкових добутків[en] абелевих груп з симетричними групами втілюють сімейства трійок підмножин зі спільною версією ВПД, то існують алгоритми перемножування матриць із по суті квадратичною складністю.[12][13] Більшість дослідників вважають, що це так і є.[10] Проте Алон, Шпілка та Кріс Уманс[en] нещодавно показали, що деякі з цих гіпотез, що передбачають швидке множення матриць, є несумісними з іншою правдоподібною гіпотезою, соняшниковою[en].[14]

Алгоритм Фрейвальдса[en] є простим алгоритмом Монте-Карло, який для заданих матриць A, B та C перевіряє за час Θ(n2), чи AB = C.

Паралельні та розподілені алгоритми

Розпаралелювання зі спільною пам'яттю

Окреслений вище алгоритм «розділюй та володарюй» можливо розпаралелити для багатопроцесорності зі спільною пам'яттю двома способами. Вони ґрунтуються на тім факті, що вісім рекурсивних перемножувань матриць у

можливо виконувати незалежно одне від одного, як і чотири підсумовування (хоча алгоритмові потрібно «об'єднати» перемножування перед виконанням додавань). Використовуючи повну паралельність задачі, отримують алгоритм, який може бути виражено псевдокодом стилю відгалужування-об'єднування[en]:[15]

Процедура перемножити(C, A, B):

  • Базовий випадок: якщо n = 1, встановити c11a11 × b11 (або перемножити маленьку блокову матрицю).
  • Інакше, виділити простір для нової матриці T форми n × n, а тоді:
    • Розбити A на A11, A12, A21, A22.
    • Розбити B на B11, B12, B21, B22.
    • Розбити C на C11, C12, C21, C22.
    • Розбити T на T11, T12, T21, T22.
    • Паралельне виконання:
      • Відгалузити перемножити(C11, A11, B11).
      • Відгалузити перемножити(C12, A11, B12).
      • Відгалузити перемножити(C21, A21, B11).
      • Відгалузити перемножити(C22, A21, B12).
      • Відгалузити перемножити(T11, A12, B21).
      • Відгалузити перемножити(T12, A12, B22).
      • Відгалузити перемножити(T21, A22, B21).
      • Відгалузити перемножити(T22, A22, B22).
    • Об'єднати (дочекатися завершення паралельних відгалужень).
    • додати(C, T).
    • Звільнити T.

Процедура додати(C, T) додає T до C, поелементно:

  • Базовий випадок: якщо n = 1, встановити c11c11 + t11 (або виконати короткий цикл, можливо, розмотаний).
  • Інакше:
    • Розбити C на C11, C12, C21, C22.
    • Розбити T на T11, T12, T21, T22.
    • Паралельно:
      • Відгалузити додати(C11, T11).
      • Відгалузити додати(C12, T12).
      • Відгалузити додати(C21, T21).
      • Відгалузити додати(C22, T22).
    • Об'єднати.

Тут відгалузити є ключовим словом, яке сигналізує, що обчислення може бути виконувано паралельно до решти виклику функції, тоді як об'єднати чекає на завершення всіх попередньо «відгалужених» обчислень. Розбити досягає своєї мети лише маніпулюванням вказівниками.

Цей алгоритм має критичною довжиною шляху Θ(log2 n) кроків, що означає, що йому потрібно стільки часу на ідеальній машині з нескінченним числом процесорів. Отже, на будь-якому реальному комп'ютері він має максимальне можливе прискорення Θ(n3/log2 n). Цей алгоритм не є практичним через витрати на передавання, властиві переміщуванню даних до та з тимчасової матриці T, але практичніший варіант досягає прискорення Θ(n2) без використання тимчасової матриці.[15]

Блокове перемножування матриць. У двовимірному алгоритмі кожен із процесорів є відповідальним за одну підматрицю C. У тривимірному алгоритмі кожну з пар перемножуваних підматриць з A та B призначають одному процесорові.

Алгоритми з униканням передавання, та розподілені алгоритми

На сучасних архітектурах з ієрархічною пам'яттю вартість завантажування та зберігання елементів матриць входу має схильність переважати над вартістю арифметики. На одній машині це — кількість даних, передаваних між оперативною пам'яттю та кешем, тоді як на багатовузловій машині з розподіленою пам'яттю це — кількість, що передається між вузлами. В кожному з випадків її називають пропускною здатністю обміну (англ. communication bandwidth). Наївний алгоритм із використанням трьох вкладених циклів використовує пропускну здатністю обміну Ω(n3).

Алгоритм Кеннона[en], відомий також як двовимірний алгоритм (англ. 2D algorithm), є алгоритмом з униканням обміну[en], який розбиває кожну з матриць входу на блокову матрицю, чиї елементи є підматрицями розміру M/3 на M/3, де M є розміром швидкої пам'яті.[16] Потім застосовують наївний алгоритм над блоковими матрицями, обчислюючи добутки підматриць цілком у швидкій пам'яті. Це знижує пропускну здатність обміну до O(n3/M), яка є асимптотично оптимальною (для алгоритмів, що виконують обчислення Ω(n3)).[17][18]

У розподіленій постановці з p процесорами, розставленими у двовимірній сітці p на p, кожному з процесорів можливо призначувати по одній з підматриць результату, і добуток буде обчислювано з передаванням кожним з процесорів O(n2/p) слів, що є асимптотично оптимальним, виходячи з того, що кожен з вузлів зберігає щонайменше O(n2/p) елементів.[18] Це може бути вдосконалено тривимірним алгоритмом (англ. 3D algorithm), який впорядковує процесори у тривимірну кубічну сітку, призначуючи кожен добуток двох підматриць входу одному процесорові. Підматриці результату потім породжують виконанням зведення над кожним з рядків.[19] Цей алгоритм передає O(n2/p2/3) слів на процесор, що є асимптотично оптимальним.[18] Проте, це вимагає повторювання кожного з елементів матриць входу p1/3 разів, і відтак вимагає в p1/3 разів більше пам'яті, ніж необхідно для зберігання входів. Для подальшого зниження тривалості виконання цей алгоритм може бути поєднувано з алгоритмом Штрассена.[19] «2,5-вимірні» алгоритми (англ. "2.5D" algorithms) забезпечують безперервний компроміс між використанням пам'яті та пропускною здатністю передавання.[20] На сучасних розподілених обчислювальних середовищах, таких як MapReduce, було розроблено спеціалізовані алгоритми перемножування.[21]

Алгоритми для сіток

Матричне перемножування, виконане за 2n-1 кроків для двох матриць n×n на перехрещуваній сітці.

Існує низка алгоритмів для перемножування на сітках. Для перемножування двох n×n на стандартній двовимірній сітці із застосуванням двовимірного алгоритму Кеннона[en] обчислюють перемножування в 3n-2 кроків, хоча це знижується до половини цього числа для повторюваних обчислень.[22] Стандартний масив є неефективним, оскільки дані з двох матриць не надходять одночасно, і його має бути доповнювано нулями.

Результат є ще швидшим на двошаровій перехрещуваній сітці, де потрібно лише 2n-1 кроків.[23] Продуктивність додатково покращується для повторюваних обчислень, ведучи до стовідсоткової ефективності.[24] Перехрещуваний сітковий масив можна розглядати як особливий випадок не планарної (тобто, багатошарової) оброблювальної структури.[25]

Див. також

Примітки

  1. а б в г Skiena, Steven (2008). Sorting and Searching. The Algorithm Design Manual. Springer. с. 45–46, 401—403. doi:10.1007/978-1-84800-070-4_4. ISBN 978-1-84800-069-8. (англ.)
  2. а б в Т. Кормен; Ч. Лейзерсон; Р. Рівест; К. Стайн (2009) [1990]. 28 Дії над матрицями. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN 0-262-03384-4.
  3. а б в г д Amarasinghe, Saman; Leiserson, Charles (2010). 6.172 Performance Engineering of Software Systems, Lecture 8. MIT OpenCourseWare. Massachusetts Institute of Technology. Архів оригіналу за 7 жовтня 2019. Процитовано 27 січня 2015. [Архівовано 2019-10-07 у Wayback Machine.] (англ.)
  4. Lam, Monica S.; Rothberg, Edward E.; Wolf, Michael E. (1991). The Cache Performance and Optimizations of Blocked Algorithms. Int'l Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS). (англ.)
  5. а б в Prokop, Harald (1999). Cache-Oblivious Algorithms (PDF) (Master's). MIT. Архів оригіналу (PDF) за 24 листопада 2019. Процитовано 15 грудня 2019. (англ.)
  6. Miller, Webb (1975), Computational complexity and numerical stability, SIAM News, 4: 97—107, CiteSeerX 10.1.1.148.9947 (англ.)
  7. Press, William H.; Flannery, Brian P.; Teukolsky, Saul A.; Vetterling, William T. (2007). Numerical Recipes: The Art of Scientific Computing (вид. 3rd). Cambridge University Press. ISBN 978-0-521-88068-8. (англ.)
  8. Le Gall, François (2014), Powers of tensors and fast matrix multiplication, Proceedings of the 39th International Symposium on Symbolic and Algebraic Computation (ISSAC 2014), arXiv:1401.7714, Bibcode:2014arXiv1401.7714L (англ.). Первинний алгоритм, представлений Доном Копперсмітом та Шмуелем Віноградом[en] 1990 року, має асимптотичну складність O(n2.376). Його було поліпшено 2013 року до O(n2.3729) Вірджинією Василевською-Вільямс[en], що дало тривалість лише трошки гіршу, ніж у вдосконалення ле Ґалля: Williams, Virginia Vassilevska. Multiplying matrices faster than Coppersmith-Winograd (PDF). Архів оригіналу (PDF) за 8 жовтня 2013. Процитовано 15 грудня 2019. [Архівовано 2013-10-08 у Wayback Machine.] (англ.)
  9. Iliopoulos, Costas S. (1989), Worst-case complexity bounds on algorithms for computing the canonical structure of finite abelian groups and the Hermite and Smith normal forms of an integer matrix (PDF), SIAM Journal on Computing, 18 (4): 658—669, CiteSeerX 10.1.1.531.9309, doi:10.1137/0218045, MR 1004789, архів оригіналу (PDF) за 5 березня 2014, процитовано 15 грудня 2019, The Coppersmith–Winograd algorithm is not practical, due to the very large hidden constant in the upper bound on the number of multiplications required. [Архівовано 5 березня 2014 у Wayback Machine.] (англ.)
  10. а б Robinson, Sara (2005). Toward an Optimal Algorithm for Matrix Multiplication (PDF). SIAM News. 38 (9). Архів оригіналу (PDF) за 31 березня 2019. Процитовано 15 грудня 2019. (англ.)
  11. Ран Рац[en]. On the complexity of matrix product. In Proceedings of the thirty-fourth annual ACM symposium on Theory of computing. ACM Press, 2002. DOI:10.1145/509907.509932. (англ.)
  12. Henry Cohn, Robert Kleinberg[en], Balázs Szegedy[en], and Chris Umans. Group-theoretic Algorithms for Matrix Multiplication. arXiv:math.GR/0511460. Proceedings of the 46th Annual Symposium on Foundations of Computer Science, 23–25 October 2005, Pittsburgh, PA, IEEE Computer Society, pp. 379–388. (англ.)
  13. Henry Cohn, Chris Umans. A Group-theoretic Approach to Fast Matrix Multiplication. arXiv:math.GR/0307321. Proceedings of the 44th Annual IEEE Symposium on Foundations of Computer Science, 11–14 October 2003, Cambridge, MA, IEEE Computer Society, pp. 438–449. (англ.)
  14. Alon, Shpilka, Umans, On Sunflowers and Matrix Multiplication [Архівовано 9 грудня 2016 у Wayback Machine.] (англ.)
  15. а б Randall, Keith H. (1998). Cilk: Efficient Multithreaded Computing (PDF) (Ph.D.). Massachusetts Institute of Technology. с. 54—57. Архів оригіналу (PDF) за 6 листопада 2020. Процитовано 15 грудня 2019. (англ.)
  16. Lynn Elliot Cannon, A cellular computer to implement the Kalman Filter Algorithm, Technical report, Ph.D. Thesis, Montana State University, 14 July 1969. (англ.)
  17. Hong, J. W.; Kung, H. T. (1981). I/O complexity: The red-blue pebble game (PDF). STOC '81: Proceedings of the Thirteenth Annual ACM Symposium on Theory of Computing: 326—333. Архів оригіналу (PDF) за 15 грудня 2019. Процитовано 15 грудня 2019. [Архівовано 2019-12-15 у Wayback Machine.] (англ.)
  18. а б в Irony, Dror; Toledo, Sivan; Tiskin, Alexander (September 2004). Communication lower bounds for distributed-memory matrix multiplication. J. Parallel Distrib. Comput. 64 (9): 1017—1026. CiteSeerX 10.1.1.20.7034. doi:10.1016/j.jpdc.2004.03.021. (англ.)
  19. а б Agarwal, R.C.; Balle, S. M.; Gustavson, F. G.; Joshi, M.; Palkar, P. (September 1995). A three-dimensional approach to parallel matrix multiplication. IBM J. Res. Dev. 39 (5): 575—582. CiteSeerX 10.1.1.44.3404. doi:10.1147/rd.395.0575. (англ.)
  20. Solomonik, Edgar; Demmel, James (2011). Communication-optimal parallel 2.5D matrix multiplication and LU factorization algorithms. Proceedings of the 17th International Conference on Parallel Processing. Part II: 90—109. (англ.)
  21. Bosagh Zadeh, Reza; Carlsson, Gunnar. Dimension Independent Matrix Square Using MapReduce (PDF). Архів оригіналу (PDF) за 14 липня 2014. Процитовано 12 липня 2014. (англ.)
  22. Bae, S.E., T.-W. Shinn, T. Takaoka (2014) A faster parallel algorithm for matrix multiplication on a mesh array [Архівовано 18 травня 2021 у Wayback Machine.]. Procedia Computer Science 29: 2230-2240 (англ.)
  23. Kak, S. (1988) A two-layered mesh array for matrix multiplication. Parallel Computing 6: 383-385 (англ.)
  24. Kak, S. (2014) Efficiency of matrix multiplication on the cross-wired mesh array. https://arxiv.org/abs/1411.3273 [Архівовано 23 березня 2019 у Wayback Machine.] (англ.)
  25. Kak, S. (1988) Multilayered array computing. Information Sciences 45: 347-365 (англ.)

Література

Read other articles:

У этого топонима есть и другие значения, см. Лаврский переулок. Лаврский переулок Общая информация Страна Россия Город Москва Округ ЦАО Район Мещанский Протяжённость 450 м Метро 05 Проспект Мира06 Проспект Мира10 Достоевская Прежние названия 2-й Лаврский переулок Ла́врский ...

 

جامعة لياج   معلومات المؤسس فيلم الأول  التأسيس 1817  الموقع الجغرافي إحداثيات 50°38′27″N 5°34′29″E / 50.640833°N 5.574722°E / 50.640833; 5.574722  [1] البلد بلجيكا  إحصاءات عدد الطلاب 17000 (2010)25421 (2018)[2]  عضوية كبار المديرين الدوليين في الهندسة  [لغات أخرى]‏ر...

 

Cette liste est une ébauche concernant le Luxembourg. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. María Teresa Mestre Batista, actuelle grande-duchesse consort de Luxembourg depuis le 7 octobre 2000. Cet article donne la liste des conjoints des souverains luxembourgeois. Maison d'Ardenne (963-1136) Nom (dates) Époux Titres Eléments biographiques Hedwige de Nordgau (937-992) Sigefroid de Luxembourg (mariag...

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (نوفمبر 2019) الدوري اليوغوسلافي الأول 1951 تفاصيل الموسم الدوري اليوغوسلافي الأول  النسخة 22  البلد يوغوسلافيا  ا

 

Dieser Artikel hat die Schweizer Behörde zum Gegenstand. Zur deutschen Behörde siehe Bundesamt für Migration und Flüchtlinge. Staatssekretariat für Migration SEM Hauptsitz Wabern Vorsteherin Staatssekretärin Christine Schraner Burgener Aufsicht Eidgenössisches Justiz- und Polizeidepartement EJPD Webpräsenz www.sem.admin.ch Hauptgebäude des Staatssekretariats für Migration in Wabern Das Staatssekretariat für Migration SEM (französisch Secrétariat d’Etat aux migrations SEM, itali...

 

龍運巴士N64線Long Win Bus Route N64概覽營運公司龍運巴士所屬車廠小蠔灣車廠(T)使用車輛Enviro500(8**/84**/85**)Enviro500 MMC(95**)线路信息起點站機場(地面運輸中心)途經一號客運大樓、機場後勤區、東涌站終點站東涌(逸東邨)线路长度13.6公里运行周期30分鐘起點站服務時間00:45、01:15终点站运营时间不設回程班次頻率固定班次票价$5.4相关路線服務時間以外替代线路龍運巴...

UA Little Rock William H. Bowen School of LawMottoPublic Service, Access to Justice, ProfessionalismParent schoolUniversity of Arkansas at Little RockEstablished1975School typePublic[1]DeanTheresa BeinerLocationLittle Rock, Arkansas, U.S.34°44′09″N 92°15′47″W / 34.73583°N 92.26306°W / 34.73583; -92.26306Enrollment293 (full-time), 101 (part-time)[1]Faculty108[2]USNWR ranking148th-193rd (bottom 25%)[2]Bar pass rate81.6%Websiteu...

 

Cet article est une ébauche concernant le sport automobile et l’automobile. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Pour les articles homonymes, voir Neyret. Robert NeyretBob Neyret au départ du Rallye Monte-Carlo historique 2010BiographieNaissance 28 février 1934 (89 ans)GrenobleNationalité françaiseActivités Pilote de rallye, chirurgien-dentisteEnfant Pascale NeyretAutres informationsSport ...

 

Nécropole nationale de Courcelles-le-ComtePays FranceRégion Hauts-de-FranceCommune Courcelles-le-ComtePersonnes 314Coordonnées 50° 09′ 30″ N, 2° 46′ 28″ Emodifier - modifier le code - modifier Wikidata La nécropole nationale de Courcelles-le-Comte est un cimetière militaire français sis sur le territoire de la commune de Courcelles-le-Comte, dans le département du Pas-de-Calais. Localisation La nécropole est située sur la route départementale ...

Defunct flying squadron of the Royal Air Force No. 236 Squadron RAFActiveAugust 1918 - 15 May 1919 31 October 1939 – 25 May 1945Country United KingdomBranch Royal Air ForceMotto(s)Latin: Speculate nuntiate(Latin: Having watched, bring word)[1][2]InsigniaSquadron Badge heraldryIn front of a fountain, a mailed fist grasping a winged sword.[3]Squadron CodesFA (Oct 1939 - 1941) ND (1941 - Aug 1943) MB (Jul 1944 - May 1945)Military unit No. 236 Squadron RAF was a Royal Ai...

 

此條目或章節為有关籌備中,拍攝中或待播的電視節目。未有可靠来源的臆測內容可能會被移除。目前記載或許與實際節目播出之內容有所出入,亦可能會隨節目的播出而變化並增添更多有效信息。 為美好的世界獻上祝福! この素晴らしい世界に祝福を! 類型 喜劇[1][2]、異世界[2]、劍與魔法[3] 電視動畫 原作 曉夏目 總導演 金崎貴臣(第3季) 導演 ...

 

Telugu romantic drama JaanuTheatrical release posterDirected byPremkumar Chandran Hrishikesh BhargavaWritten byPremkumar ChandranBased on'96by Premkumar ChandranProduced byDil RajuStarring Sharwanand Samantha Ruth Prabhu CinematographyMahendiran JayarajuEdited byPraveen K. L.Music byGovind VasanthaProductioncompanySri Venkateswara CreationsRelease date 7 February 2020 (2020-02-07)[1] Running time151 minutes[2]CountryIndiaLanguageTelugu Jaanu is a 2020 Indian Tel...

The HonourableKathleen SatchwellSatchwell (1985)Gauteng Division of the High Court Personal detailsAlma materRhodes University Kathleen Satchwell, commonly known as Kathy Satchwell, is a judge of the Gauteng Division of the High Court (formerly the South Gauteng High Court) in South Africa. Biography She was educated at Rhodes University in the 1960s.[1] She was a prominent human rights attorney in the 1990s. Satchwell was also involved with court cases of the Mandela United Football ...

 

Salem Ciudad SalemUbicación en el condado de Livingston en Kentucky Ubicación de Kentucky en EE. UU.Coordenadas 37°15′53″N 88°14′28″O / 37.2647, -88.2411Entidad Ciudad • País Estados Unidos • Estado  Kentucky • Condado LivingstonSuperficie   • Total 2.21 km² • Tierra 2.2 km² • Agua (0.35%) 0.01 km²Altitud   • Media 140 m s. n. m.Población (2010)   • Total 752 hab. ...

 

郡山城郡山城/こおりやまじょう Kooriyama-jō雁陣之城本丸石垣和护城河类型城郭構造:曲輪#輪郭式平山城天守構造:5層6階(據傳)位置 日本奈良縣坐标34°39′6.9″N 135°46′44.18″E / 34.651917°N 135.7789389°E / 34.651917; 135.7789389建成时间天正8年(1580年)廢城時間明治6年(1873年)当前用途現存遺跡:石垣、护城河文化財指定:國之史跡重建部分:大手...

Cet article présente les personnages secondaires de la série télévisée Stargate Universe. Hunter Riley Le sergent Hunter Riley est interprété par Haig Sutherland. Riley est passé par la porte des étoiles de la base Icare vers le Destinée. Son travail comprend les appels de la porte des étoiles et l'interprétation des symboles et leur langue. Il a identifié les huit symboles de l'adresse de la porte des étoiles du vaisseau qui peut les renvoyer vers la Terre, bien qu'elle ne peut...

 

Air Component CommandFlygvapnets taktiska stabActive1994–2018CountrySwedenAllegianceSwedish Armed ForcesBranchSwedish Air ForceTypeMilitary staffRoleOperational, territorial and tactical operationsSizeStaffPart ofSwedish Armed Forces HeadquartersGarrison/HQStockholmMarchFlygvapnets paradmarsch (Sernklef)[1]Military unit The Air Component Command[2] (Swedish: Flygvapnets taktiska stab, FTS) was a part of the Joint Forces Command of the Swedish Armed Forces. The staff was...

 

Untuk pandemi yang sedang berlangsung di Indonesia, lihat pandemi COVID-19 di Indonesia. Berdasarkan Keputusan Menteri Kesehatan Republik Indonesia Nomor HK.01.07/MENKES/169/2020, berikut daftar rumah sakit rujukan penanggulangan penyakit infeksi emerging tertentu (termasuk COVID-19) berdasarkan provinsi.[1] Aceh SumatraUtara SumatraBarat Riau KepRiau Bengkulu Sumatera Selatan Lampung Kep. BangkaBelitung Jambi Banten Jakarta JawaBarat JawaTengah Yogyakarta JawaTimur KalimantanBarat Ka...

Canadian politician This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Ali Ehsassi – news · newspapers · books · scholar · JSTOR (December 2019) (Learn how and when to remove this template message)...

 

ابو الامه تعديل  بطلق على الأشخاص التاليه أسماؤهم لقب أب لشعوبهم اللسته الاسم الدوله الاسم المحلى اللقب ملحوظات احمد شاه الدرانى افغانستان باديشاه Ahmad Shah the Father[1][2][3] Founder of the Afghan Durrani Empire. اسكندر بك البانيا Ati i Kombit ابو الامه Led a two decade long rebellion against the Ottoman Empire في...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!