په تیرو برخو کې (
په عمل کې، سپیر اریونه ډیری وختونه دومره لوی وي چې د ورته عناصرو سره د حافظې په نیولو کې هیڅ معنی نلري. له همدې امله، دا د دې معنی لري چې سپارس صفونه په داسې ډول پلي کړي چې حافظه د ورته ارزښتونو ذخیره کولو کې ضایع نشي.
په ځینو پروګرامینګ ژبو کې، سپارس صفونه پخپله ژبه کې شامل دي،
نړیوال د سپیر صفونو پلي کولو لپاره ښه نوماندان دي ځکه چې:
- دوی یوازې د ځانګړو نوډونو ارزښتونه ساتي او د نه تعریف شوي ارزښتونو ذخیره نه کوي؛
- د نوډ ارزښت ته د لاسرسي لپاره انٹرفیس خورا ورته دی چې څومره د پروګرام کولو ژبې څو اړخیز سري عنصر ته لاسرسی پلي کوي.
Set ^a(1, 2, 3)=5 Write ^a(1, 2, 3)
- ګلوبل د ډیټا ذخیره کولو لپاره د کافي ټیټې کچې جوړښت دی ، نو له همدې امله دا د سرعت عالي ځانګړتیاوې لري (په هر ثانیه کې له سلګونو زرو څخه تر لسګونو ملیون لیږدونه ، د هارډویر پورې اړه لري ، لاندې وګورئ).
1 )
څرنګه چې ګلوبل یو دوامداره جوړښت دی ، نو دا معنی لري چې په دوی باندې د سپکو صفونو رامینځته کول کله چې دمخه پیژندل شوي وي چې د RAM مقدار به کافي نه وي.
د سپارس سرې پلي کولو یو له ملکیتونو څخه دا دی چې ځینې ډیفالټ ارزښت بیرته راستانه کړي که چیرې نا تعریف شوي حجرې ته لاسرسی رامینځته شي.
دا د فنکشن په کارولو سره پلي کیدی شي
SET a = $GET(^a(x,y,z), defValue)
کوم کارونه سپیر صفونو ته اړتیا لري او نړیوال څنګه مرسته کولی شي؟
اتصال (تړون) میټریکس
په ښکاره ډول، څومره چې ګراف لوی وي، په میټریکس کې به ډیر صفر وي. که، د مثال په توګه، موږ د ټولنیز شبکې ګراف واخلو او د ورته میټریکس په بڼه یې وړاندې کړو، نو دا به تقریبا په بشپړه توګه له صفر څخه جوړه وي، د بیلګې په توګه. یو نرۍ صف به وي.
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 * محصول په توګه اخیستل کیږي.
د بټ تارونو سره لاسوهنه د فنکشن لخوا ترسره کیږي
; установка бита
SET $BIT(rowID, positionID) = 1
; получение бита
Write $BIT(rowID, positionID)
د دولتي ماشین لیږد میز
څرنګه چې د محدود اتوماتیک لیږد ګراف یو عادي ګراف دی، نو د محدود اتوماتیک لیږد جدول ورته نږدې میټریکس دی چې پورته یې بحث شوی.
د سیلولر اتوماتیک
ترټولو مشهور سیلولر اتوماتیک دی
سټیفن وولفرام په دې باور دی چې سیلولر اتوماتیک دي
دا ثابته شوې چې په کمپیوټر کې د اجرا وړ هر ډول الګوریتم د سیلولر اتوماتیک په کارولو سره پلي کیدی شي. د سیلولر آټوماټا د متحرک چاپیریال او سیسټمونو ماډل کولو لپاره کارول کیږي، د الګوریتمیک ستونزو حل کولو او نورو موخو لپاره.
که موږ یو لوی ساحه ولرو او موږ اړتیا لرو چې د سیلولر اتوماتیک ټول منځني حالتونه ثبت کړو، نو دا د نړیوالو کارولو لپاره معنی لري.
کارتوګرافي
لومړی شی چې زما ذهن ته راځي کله چې د سپیر صفونو کارولو خبره راځي د نقشې کولو دندې دي.
د یوې قاعدې په توګه، په نقشه کې ډیر خالي ځای شتون لري. که نقشه د لوی پکسلونو په توګه وښودل شي، نو د ځمکې 71٪ پکسلونه به د سمندر لخوا اشغال شي. سپین صف. او که تاسو یوازې د انساني لاسونو کار پلي کړئ ، نو خالي ځای به له 95٪ څخه ډیر وي.
البته، هیڅوک د راسټر اریونو په بڼه نقشه نه ذخیره کوي؛ د ویکتور استازیتوب کارول کیږي.
مګر د ویکتور نقشې څه دي؟ دا یو ډول چوکاټ او پولی لائنونه او پولیګونونه دي چې ټکي لري.
په لازمي ډول د دوی ترمینځ د ټکو او اړیکو ډیټابیس.
زموږ د کهکشان نقشه کولو لپاره د ګیا ټیلسکوپ ماموریت یو له خورا هوښیار نقشې کولو ماموریت دی. په انځوریزه توګه، زموږ کهکشان، لکه د ټول کائنات په څیر، یو پرله پسې سپیر سري دی: د خالي کولو لوی ځایونه چې په کې نادر کوچني ټکي شتون لري - ستوري. خالي ځای 99,999999…….% دی. زموږ د کهکشان نقشه ذخیره کولو لپاره، یو نړیوال ډیټابیس غوره شوی - کیچ.
زه په دې پروژه کې د نړیوالو جوړښتونو دقیق جوړښت نه پوهیږم، زه فکر کوم چې دا ورته ورته دی:
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 دي
د ګلوبلونو انعطاف وړ جوړښت تاسو ته اجازه درکوي د ستورو او سیارټونو هر ډول اړین ځانګړتیاوې خوندي کړئ، ځکه چې د ګلوبلونو اډې لږې دي.
زموږ د کائنات نقشه ذخیره کولو لپاره ، کیچ نه یوازې د دې انعطاف لپاره غوره شوی و ، بلکه د دې وړتیا لپاره هم غوره شوی و چې د ډیټا جریان خورا ګړندی ذخیره کړي ، پداسې حال کې چې په ورته وخت کې د ګړندي لټونونو لپاره شاخص ګلوبل رامینځته کوي.
که موږ ځمکې ته راستانه شو، نو په نړۍ کې د کارتوګرافیک پروژې رامینځته شوې
په دې وروستیو کې
په OpenStreetMap XAPI کې په نړیواله کچه د ځایي شاخصونو پلي کول
څخه اخیستل شوي انځورونه
ټوله نړۍ په چوکونو ویشل شوې، بیا فرعي مربع، او فرعي مربع په فرعي فرعي مربع، او داسې نور. په عموم کې، موږ د ذخیره کولو لپاره یو درجه بندي جوړښت ترلاسه کوو کوم چې نړیوال جوړ شوي.
په هر وخت کې، موږ کولی شو نږدې سمدستي د غوښتل شوي مربع غوښتنه وکړو یا یې پاکه کړو، او ټول فرعي مربع به بیرته یا پاک شي.
په نړۍ کې ورته سکیم په څو لارو پلي کیدی شي.
اختیار 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 کارول ستونزمن نه دي چې د هرې کچې په مربع کې موقعیت لرونکي پوائنټونو غوښتنه وکړي. دا به یو څه اسانه وي چې په لومړي اختیار کې په هره کچه د مربع ټوټې ځای پاک کړئ، مګر دا په ندرت سره اړین دی.
د ټیټې کچې مربع څخه یوه بیلګه:
او دلته د XAPI پروژې څخه ډیری نړیوال شتون لري: په نړۍ کې د شاخص استازیتوب:
نړیوال ^ لار د ټکو ذخیره کولو لپاره کارول کیږي
په ګلوبلونو کې د سپین سرې کارولو سخت طبقه بندي.
- موږ د ځانګړو شیانو همغږي ذخیره کوو او د دوی حالتونه (نقشه کول، سیلولر اتومات)
- موږ سپیر میټریک ذخیره کوو.
د 2 قضیې لپاره) کله چې د ځانګړي همغږۍ غوښتنه وکړئ چیرې چې عنصر ارزښت نه وي ټاکل شوی، موږ باید د ډیفالټ سپارس سري عنصر ارزښت ترلاسه کړو.
هغه بونس چې موږ یې ترلاسه کوو کله چې په نړۍ کې څو اړخیز میټریکونه ذخیره کوو
په چټکۍ سره لیرې کړئ او / یا د ځای ټوټې وټاکئ چې د قطارونو، الوتکو، کیوبونو، او داسې نورو ضرب دي. د هغو قضیو لپاره چیرې چې د انټیجر شاخصونه کارول کیږي، د چټکو لرې کولو او/یا د ځای د ټوټو د راوړلو وړتیا چې د قطارونو، الوتکو، کیوبونو، او داسې نورو څخه وي. ممکن ګټور وي.
ټیم
ارقام په نړیواله کچه درې اړخیزه لړۍ ښیي ^a او د حذف کولو مختلف ډولونه.
د پیژندل شوي شاخصونو په کارولو سره د ځای ټوټې غوره کولو لپاره ، تاسو کولی شئ کمانډ وکاروئ
د کالم متغیر کې د میټریکس کالم غوره کول:
; Зададим трёхмерный разреженный массив 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
هغه څه چې د کالم متغیر په اړه په زړه پوري دي دا دي چې موږ یو سپیر سري هم لرو ، کوم چې باید له لارې هم لاسرسی ومومي
د ځای ټوټې غوره کول د فنکشن په کارولو سره د کوچني برنامه له لارې هم ترسره کیدی شي
پایلې
اوسنۍ زمانه د نوي هوښیارۍ دندې رامینځته کوي. ګرافونه د ملیاردونو عمودیو څخه جوړ کیدی شي، نقشه د ملیاردونو نقطو څخه جوړه شوې وي، او ځینې ممکن حتی وغواړي چې خپل کائنات د سیلولر اتوماتیک باندې پرمخ بوځي (
کله چې د نادر صفونو څخه د معلوماتو حجم نور په RAM کې مناسب نه وي، مګر تاسو اړتیا لرئ چې ورسره کار وکړئ، نو دا د نړیوالو او COS په اړه د ورته پروژو پلي کولو امکان په پام کې نیولو سره ارزښت لري.
له پاملرنې څخه مو مننه! موږ په نظرونو کې ستاسو پوښتنو او هیلو ته په تمه یو.
دادعا: دا مقاله او دې ته زما نظرونه زما نظر دی او د InterSystems Corporation رسمي دریځ سره هیڅ تړاو نلري.
سرچینه: www.habr.com