Π“Π»ΠΎΠ±Π°Π»Ρ‹ β€” ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π§Π°ΡΡ‚ΡŒ 3

Π“Π»ΠΎΠ±Π°Π»Ρ‹ — ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π§Π°ΡΡ‚ΡŒ 3Π’ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… частях (1, 2) ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Π³Π»ΠΎΠ±Π°Π»Π°Ρ… ΠΊΠ°ΠΊ ΠΎ Π΄Π΅Ρ€Π΅Π²ΡŒΡΡ…, Π² этой ΠΌΡ‹ рассмотрим Π³Π»ΠΎΠ±Π°Π»Ρ‹ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы.

Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ массив β€” это Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ массива, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ элСмСнтами. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΅ΡΡ‚ΡŒ смысл Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ²Π°Π»Π°ΡΡŒ Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы входят Π² сам язык, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² J, MATLAB. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…. Для Π‘++ β€” Eigen ΠΈ Π΄Ρ€.

Π“Π»ΠΎΠ±Π°Π»Ρ‹ β€” Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… массивов, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  1. Π₯ранят значСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² ΠΈ Π½Π΅ хранят значСния Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ…;
  2. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ доступа ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΡƒΠ·Π»Π° Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ доступ ΠΊ элСмСнту ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Π“Π»ΠΎΠ±Π°Π» β€” достаточно низкоуровнСвая структура для хранСния Π΄Π°Π½Π½Ρ‹Ρ…, поэтому ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ скоростными характСристиками (ΠΎΡ‚ сотСн тысяч Π΄ΠΎ дСсятков ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду Π² зависимости ΠΎΡ‚ ΠΆΠ΅Π»Π΅Π·Π°, см. 1)

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³Π»ΠΎΠ±Π°Π» β€” пСрсистСнтная структура, Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π·Π°Ρ€Π°Π½Π΅Π΅ извСстно, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π±ΡƒΠ΄Π΅Ρ‚ нСдостаточно.

Одним ΠΈΠ· свойств Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… массивов являСтся Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ значСния ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ вСдётся ΠΊ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ячСйкС.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ $GET Π² COS. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ рассмотрСн 3-Ρ… ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

SET a = $GET(^a(x,y,z), defValue)

Π’ ΠΊΠ°ΠΊΠΈΡ… ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Π°Ρ… Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы ΠΈ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Ρ€ΡƒΡ‡ΠΈΡ‚ΡŒ?

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности (связности)

Π’Π°ΠΊΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для прСдставлСния Π³Ρ€Π°Ρ„ΠΎΠ²:

Π“Π»ΠΎΠ±Π°Π»Ρ‹ — ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π§Π°ΡΡ‚ΡŒ 3

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ большС Π³Ρ€Π°Ρ„, Ρ‚Π΅ΠΌ большС Π½ΡƒΠ»Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅. Если, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π·ΡΡ‚ΡŒ Π³Ρ€Π°Ρ„ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΡ‡Ρ‚ΠΈ вСсь Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½ΡƒΠ»Π΅ΠΉ, Ρ‚.Π΅. Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΌ массивом.

Set ^m(id1, id2) = 1 
Set ^m(id1, id3) = 1 
Set ^m(id1, id4) = 1 
Set ^m(id1) = 3 
Set ^m(id2, id4) = 1 
Set ^m(id2, id5) = 1 
Set ^m(id2) = 2
....

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ сохраняСм Π² Π³Π»ΠΎΠ±Π°Π»Π΅ ^m ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ связности, Π° Ρ‚Π°ΠΊΠΆΠ΅ число Ρ€Π΅Π±Ρ‘Ρ€ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° (ΠΊΡ‚ΠΎ с ΠΊΠ΅ΠΌ Π΄Ρ€ΡƒΠΆΠΈΡ‚ ΠΈ число Π΄Ρ€ΡƒΠ·Π΅ΠΉ).

Если ΠΆΠ΅ число элСмСнтов Π² Π³Ρ€Π°Ρ„Π΅ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 29 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² (это число бСрётся ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ 8 * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ строки), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Π±ΠΎΠ»Π΅Π΅ экономичный способ хранСния Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† β€” Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ строки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ большиС пропуски.

ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΠΈ с Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ строками производятся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ $BIT.

; установка Π±ΠΈΡ‚Π°
SET $BIT(rowID, positionID) = 1
; ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚Π°
Write $BIT(rowID, positionID)

Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³Ρ€Π°Ρ„ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° β€” это ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„, Ρ‚ΠΎ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° β€” это Ρ‚Π° ΠΆΠ΅ самая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅.

ΠšΠ»Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹

Π“Π»ΠΎΠ±Π°Π»Ρ‹ — ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π§Π°ΡΡ‚ΡŒ 3

Π‘Π°ΠΌΡ‹ΠΉ извСстный ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ β€” ΠΈΠ³Ρ€Π° Β«Π–ΠΈΠ·Π½ΡŒΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·-Π·Π° своих ΠΏΡ€Π°Π²ΠΈΠ» (ΠΊΠΎΠ³Π΄Π° Ρƒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎ сосСдСй β€” ΠΎΠ½Π° ΡƒΠΌΠΈΡ€Π°Π΅Ρ‚) прСдставляСт собой Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ массив.

Π‘Ρ‚ΠΈΠ²Π΅Π½ Π’ΠΎΠ»ΡŒΡ„Ρ€Π°ΠΌ, считаСт Ρ‡Ρ‚ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ β€” это новая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π½Π°ΡƒΠΊΠΈ. Π’ 2002 Π³ΠΎΠ΄Ρƒ ΠΎΠ½ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ 1280-ΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ Β«A New Kind of ScienceΒ», Π³Π΄Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ достиТСния Π² области ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, Π½ΠΎ вСсьма устойчивы ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для всСх областСй Π½Π°ΡƒΠΊΠΈ.

Π”ΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ любой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΡ‹ΠΉ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ посрСдством ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°. ΠšΠ»Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для модСлирования динамичСских срСд ΠΈ систСм, для Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ алгоритмичСских Π·Π°Π΄Π°Ρ‡ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

Если Ρƒ нас ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ состояния ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°, Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»Ρ‹.

ΠšΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ½Π΅ Π½Π° ΡƒΠΌ, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ± использовании Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… массивов β€” это картографичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π° ΠΊΠ°Ρ€Ρ‚Π°Ρ… ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ пустого пространства. Если ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… пиксСлов, Ρ‚ΠΎ 71% пиксСлов Π—Π΅ΠΌΠ»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ занято ΠΎΠΊΠ΅Π°Π½ΠΎΠΌ. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ массив. А Ссли Π½Π°Π½ΠΎΡΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ произвСдСния Ρ€ΡƒΠΊ чСловСчСских, Ρ‚ΠΎ пустого пространства Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 95%.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ растровых массивов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ прСдставлСниС.
Но Ρ‡Ρ‚ΠΎ ΠΈΠ· сСбя ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹? Π­Ρ‚ΠΎ нСкая Ρ€Π°ΠΌΠΊΠ° ΠΈ состоящиС ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠΎΠ»ΠΈΠ»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹.
ЀактичСски Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Одна ΠΈΠ· самых Π°ΠΌΠ±ΠΈΡ†ΠΈΠΎΠ·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ картирования β€” это миссия картирования нашСй Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ тСлСскопом Гайя. ΠžΠ±Ρ€Π°Π·Π½ΠΎ говоря, наша Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠ°, ΠΊΠ°ΠΊ ΠΈ вся всСлСнная Π΅ΡΡ‚ΡŒ сплошной Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ массив: ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ пространства пустоты, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Ρ€Π΅Π΄ΠΊΠΈΠ΅ малСнькиС Ρ‚ΠΎΡ‡ΠΊΠΈ β€” Π·Π²Ρ‘Π·Π΄Ρ‹. ΠŸΡƒΡΡ‚ΠΎΠ³ΠΎ мСста 99,999999…….%. Для хранСния ΠΊΠ°Ρ€Ρ‚Ρ‹ нашСй Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ… β€” CachΓ©.

Π― Π½Π΅ знаю Ρ‚ΠΎΡ‡Π½ΡƒΡŽ структуру Π³Π»ΠΎΠ±Π°Π»ΠΎΠ² Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π°:

Set ^galaxy(b, l, d) = 1; НомСр Π·Π²Π΅Π·Π΄Ρ‹ ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ, Ссли Π΅ΡΡ‚ΡŒ
Set ^galaxy(b, l, d, "name") = "Sun"
Set ^galaxy(b, l, d, "type") = "normal" ; Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ blackhole, quazar, red_dwarf ΠΈ Ρ‚.Π΄.
Set ^galaxy(b, l, d, "weight") = 14E50
Set ^galaxy(b, l, d, "planetes") = 7
Set ^galaxy(b, l, d, "planetes", 1) = "Mercury"
Set ^galaxy(b, l, d, "planetes", 1, weight) = 1E20
...

Π“Π΄Π΅ b, l, d β€” это галактичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡˆΠΈΡ€ΠΎΡ‚Π°, Π΄ΠΎΠ»Π³ΠΎΡ‚Π° ΠΈ расстояниС Π΄ΠΎ Π‘ΠΎΠ»Π½Ρ†Π°.

Гибкая структура Π³Π»ΠΎΠ±Π°Π»ΠΎΠ² позволяСт ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ характСристики Π·Π²Ρ‘Π·Π΄ ΠΈ ΠΏΠ»Π°Π½Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±Π°Π·Ρ‹ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ… бСссхСмныС (scheme-less).

Для хранСния ΠΊΠ°Ρ€Ρ‚Ρ‹ нашСй всСлСнной CachΓ© Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·-Π·Π° гибкости, Π½ΠΎ ΠΈ ΠΈΠ·-Π·Π° способности ΠΎΡ‡Π΅Π½ΡŒ быстро ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈ этом ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ создавая индСксныС Π³Π»ΠΎΠ±Π°Π»Ρ‹ для быстрого поиска.

Если ΠΆΠ΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π—Π΅ΠΌΠ»Π΅, Ρ‚ΠΎ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ… Π±Ρ‹Π»ΠΈ созданы картографичСскиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ OpenStreetMap XAPI ΠΈ Ρ„ΠΎΡ€ΠΊ OpenStreetMap β€” FOSM.

НСдавно Π½Π° Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½Π΅ CachΓ© Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ гСопространствСнныС индСксы Geospatial. Π–Π΄Ρ‘ΠΌ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΡΡ‚Π°Ρ‚ΡŒΠΈ с дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

РСализация пространствСнных индСксов Π½Π° Π³Π»ΠΎΠ±Π°Π»Π΅ Π² OpenStreetMap XAPI

ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ взяты ΠΈΠ· этой ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π’Π΅ΡΡŒ Π·Π΅ΠΌΠ½ΠΎΠΉ ΡˆΠ°Ρ€ разбиваСтся Π½Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ, Π° ΠΏΠΎΠ΄ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ Π½Π° ΠΏΠΎΠ΄ΠΏΠΎΠ΄ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру для хранСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈ созданы Π³Π»ΠΎΠ±Π°Π»Ρ‹.

Π“Π»ΠΎΠ±Π°Π»Ρ‹ — ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π§Π°ΡΡ‚ΡŒ 3

Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ практичСски ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈ этом всС ΠΏΠΎΠ΄ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΎΡ‡ΠΈΡ‰Π΅Π½Ρ‹.

ΠŸΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ схСму Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколькими способами.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1:

Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 1) = idΠŸΠ΅Ρ€Π²ΠΎΠΉΠ’ΠΎΡ‡ΠΊΠΈ
Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idΠ’Ρ‚ΠΎΡ€ΠΎΠΉΠ’ΠΎΡ‡ΠΊΠΈ
...

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2:

Set ^m('abacdabcdabacdabcda', 1) = idΠŸΠ΅Ρ€Π²ΠΎΠΉΠ’ΠΎΡ‡ΠΊΠΈ
Set ^m('abacdabcdabacdabcda', 2) = idΠ’Ρ‚ΠΎΡ€ΠΎΠΉΠ’ΠΎΡ‡ΠΊΠΈ
...

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π½Π΅ составляСт Ρ‚Ρ€ΡƒΠ΄Π° Π½Π° COS/M Π·Π°Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ находящиСся Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ любого уровня. НСсколько Π»Π΅Π³Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ куски пространства любого уровня Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅, Π½ΠΎ это Ρ€Π΅Π΄ΠΊΠΎ Π½ΡƒΠΆΠ½ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΎΠ² Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня:

Π“Π»ΠΎΠ±Π°Π»Ρ‹ — ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π§Π°ΡΡ‚ΡŒ 3

А Π²ΠΎΡ‚ нСсколько Π³Π»ΠΎΠ±Π°Π»ΠΎΠ² ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° XAPI: прСдставлСниС индСкса Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ…:

Π“Π»ΠΎΠ±Π°Π»Ρ‹ — ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π§Π°ΡΡ‚ΡŒ 3

Π“Π»ΠΎΠ±Π°Π» ^way ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠΎΠ»ΠΈΠ»ΠΈΠ½ΠΈΠΉ (Π΄ΠΎΡ€ΠΎΠ³, ΠΌΠ΅Π»ΠΊΠΈΡ… Ρ€Π΅ΠΊ ΠΈ Ρ‚.ΠΏ.) ΠΈ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² (Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Π΅ области: здания, лСса ΠΈ Ρ‚.Π΄.).

Грубая классификация использования Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… массивов Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ….

  1. ΠœΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π½Π΅ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΡ… состояния (ΠΊΠ°Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹)
  2. ΠœΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Для случая 2) ΠΏΡ€ΠΈ запросС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Π³Π΄Π΅ элСмСнту Π½Π΅ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ массива ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Бонусы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π² Π³Π»ΠΎΠ±Π°Π»Π°Ρ…

БыстроС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ/ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ кусков пространства, ΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… строкам, плоскостям, ΠΊΡƒΠ±Π°ΠΌ ΠΈ Ρ‚.Π΄. Для случаСв, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ цСлочислСнныС индСксы, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстрого удалСния ΠΈ/ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ кусков пространства, ΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… строкам, плоскостям, ΠΊΡƒΠ±Π°ΠΌ ΠΈ Ρ‚.Π΄.

Командой Kill ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт, Ρ‚Π°ΠΊ ΠΈ строку, ΠΈ Π΄Π°ΠΆΠ΅ Ρ†Π΅Π»ΡƒΡŽ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ. Благодаря свойствам Π³Π»ΠΎΠ±Π°Π»ΠΎΠ², это происходит ΠΎΡ‡Π΅Π½ΡŒ быстро β€” Π² тысячи Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ поэлСмСнтноС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅.

На рисункС ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² Π³Π»ΠΎΠ±Π°Π»Π΅ ^a ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ.

Π“Π»ΠΎΠ±Π°Π»Ρ‹ — ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π§Π°ΡΡ‚ΡŒ 3

Для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ кусков пространства ΠΏΠΎ извСстным индСксам ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Merge.

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° столбца ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Column:

; Π—Π°Π΄Π°Π΄ΠΈΠΌ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ массив 3x3x3
Set ^a(0,0,0)=1,^a(2,2,0)=1,^a(2,0,1)=1,^a(0,2,1)=1,^a(2,2,2)=1,^a(2,1,2)=1
Merge Column = ^a(2,2)
; Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Column
Zwrite Column

Π’Ρ‹Π²ΠΎΠ΄:

Column(0)=1
Column(2)=1

Π§Ρ‚ΠΎ интСрСсно Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Column Ρƒ нас Ρ‚ΠΎΠΆΠ΅ получился Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ массив, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· $GET, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π½Ρ‘ΠΌ Π½Π΅ хранятся.

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° кусков пространства Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ $Order. Π­Ρ‚ΠΎ Π² особСнности ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π½Π° пространствах, индСксы ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½Ρ‹ (картография).

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠΡ‹Π½Π΅ΡˆΠ½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π° ставят Π½ΠΎΠ²Ρ‹Π΅ Π°ΠΌΠ±ΠΈΡ†ΠΈΠΎΠ·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π“Ρ€Π°Ρ„Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² Π²Π΅Ρ€ΡˆΠΈΠ½, ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² Ρ‚ΠΎΡ‡Π΅ΠΊ, Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²ΡΠ΅Π»Π΅Π½Π½ΡƒΡŽ Π½Π° ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°Ρ… (1, 2).

Когда ΠΎΠ±ΡŠΡ‘ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… массивов ΡƒΠΆΠ΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΌΠ΅Ρ‰Ρ‘Π½ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ стоит Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ… ΠΈ COS.

Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π–Π΄Ρ‘ΠΌ Π²Π°ΡˆΠΈΡ… вопросов ΠΈ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΠΉ Π² коммСнтариях.

Disclaimer: данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈ ΠΌΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π½Π΅ΠΉ являСтся ΠΌΠΎΠΈΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ InterSystems.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com