ããŒã¿æ§é ãŸãã¯æœè±¡ããŒã¿åïŒ ADT ïŒã¯ãããèªäœã«é©çšã§ããäžé£ã®æäœãšããŠå®çŸ©ãããã¢ãã«ã§ããããããã®æäœãçæããçµæã«ãã£ãŠå¶éãããŸãã
ç§ãã¡ã®ã»ãšãã©ã¯ãæ¥åžžç掻ã®äžã§ã¹ã¿ãã¯ãšãã¥ãŒã«çŽé¢ããŠããŸãããã¹ãŒããŒããŒã±ããã®ãã¥ãŒãšããŒã¿æ§é ã®éã§äžè¬çãªããšã¯äœã§ããïŒ ãã®èšäºã§ã¯ãããªãŒã«ã€ããŠã説æãããã®èšäºãç解ããããšããŸãã

UPD ïŒ s01e02
ã¹ã¿ãã¯
ã¹ã¿ãã¯ã¯éåžžãã°ã«ãŒãåããããªããžã§ã¯ãã®ç¹å®ã®ã»ãããšããŠèšè¿°ãããäžè¬ã»ããã®åèŠçŽ ã¯æ¬¡ã ã«ç§»åããŸã-ã¹ã¿ãã¯ãããæ¬ãŸãã¯ãã¬ã€ã®ã¹ã¿ãã¯ã ã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ã§ã¯ãã¹ã¿ãã¯ã¯äžè¬çãªåœ¢æã«ãŒã«ãæã€ãªããžã§ã¯ãã®ã³ã¬ã¯ã·ã§ã³ã§ããã¹ã¿ãã¯ã«é 眮ãããæåŸã®ãªããžã§ã¯ããäžè¬ãªã¹ãããæåã«ååŸãããŸãã ãã®ã«ãŒã«ã¯ããæåŸã«å ¥åãæåã«å ¥åããŸãã¯LIFOãšãåŒã°ããŸãã éã®ã«ãŒã«ããããŸã-æåã«åºãŠããŠãæåã«åºãŠããŸããïŒ FIFO ïŒããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã
ãã®ã«ãŒã«LIFOã¯ãããšãã°ãã¿ãã³ããèåã®èªå販売æ©ã§äœ¿çšãããŸããããã«ããŒããããæåŸã®ãªããžã§ã¯ããæåã«çºè¡ãããŸãã
ã¹ã¿ãã¯ã®æœè±¡çãªå®çŸ©ã¯ãªã¹ãã§ããããã¹ãŠã®æäœã¯äžæ¹ã®ç«¯ã«é¢é£ããŠå®çŸ©ãããŠããŸãã ã¹ã¿ãã¯ã®ãããã
ã¹ã¿ãã¯ãå®çŸ©ããåºæ¬æäœïŒ
- init-ã¹ã¿ãã¯ãäœæããŸãã
- push-ã¹ã¿ãã¯ã®å é ïŒäžéšïŒã«èŠçŽ ãè¿œå ããæ®ãã1ããžã·ã§ã³äžã«ç§»åããŸãã
- pop-ã¹ã¿ãã¯ããïŒäžããïŒèŠçŽ ãæœåºïŒããã³åé€ïŒããŸãã
- top-ïŒåé€ããã«ïŒã¹ã¿ãã¯ã®æåã®èŠçŽ ã®å€ãååŸããŸãã
- isEmpty-ã¹ã¿ãã¯ã®ç©ºã確èªããŸãã
å¯èœãªæ倧èŠçŽ æ°ã§ã¹ã¿ãã¯ãå®çŸ©ããããšãã§ããŸããããããã¯äºçŽ°ãªããšã§ãã ãã ããã¹ã¿ãã¯ãèŠçŽ ãåãå ¥ããããªããªããšãã¹ã¿ãã¯ã¯ãã£ã±ãã«ãªããã¹ã¿ãã¯ã«é¢ããã¡ãã»ãŒãžãè¿ããŸãïŒã¹ã¿ãã¯ãªãŒããŒãããŒïŒã ããŠãå察ã®ç¶æ³-空ã®ã¹ã¿ãã¯ããèŠçŽ ãåé€ããïŒã¹ã¿ãã¯ã¢ã³ããŒãããŒïŒã
ã¹ã¿ãã¯ãLIFOãšãã®åºæ¬æäœãšããŠå®çŸ©ãããŠããããšãç¥ã£ãŠãããšãç¹ã«ãã®ããã®åºæ¬çãªããã·ã¥ããã³ãããæäœããããããé åãä»ããŠã¹ã¿ãã¯ãæžã蟌ãããšãã§ããŸãã äŸã¯æ¬¡ã®ãšããã§ãã
<?php class ReadingList { protected $stack; protected $limit; public function __construct($limit = 10) { // $this->stack = array(); // $this->limit = $limit; } public function push($item) { // , if (count($this->stack) < $this->limit) { // array_unshift($this->stack, $item); } else { throw new RunTimeException(' !'); } } public function pop() { if ($this->isEmpty()) { // throw new RunTimeException(' !'); } else { // return array_shift($this->stack); } } public function top() { return current($this->stack); } public function isEmpty() { return empty($this->stack); } }
ãã®äŸã§ã¯ãarray_pushïŒïŒããã³array_popïŒïŒã®ä»£ããã«PHPé¢æ°array_unshiftïŒïŒããã³array_shiftïŒïŒã䜿çšãããããæåã®ã¹ã¿ãã¯èŠçŽ ãåžžã«äžçªäžã«ãããŸããããã§ãªãå Žåãé ç¹ã¯ã¹ã¿ãã¯ã®nçªç®ã®èŠçŽ ã«ãªããŸãã 倧ããªéãã¯ãããŸããã 次ã«ãã¹ã¿ãã¯ã«ããã€ãã®èŠçŽ ãè¿œå ããŸãã
<?php $myBooks = new ReadingList(); $myBooks->push('A Dream of Spring'); $myBooks->push('The Winds of Winter'); $myBooks->push('A Dance with Dragons'); $myBooks->push('A Feast for Crows'); $myBooks->push('A Storm of Swords'); $myBooks->push('A Clash of Kings'); $myBooks->push('A Game of Thrones');
ãããããããã€ãã®èŠçŽ ãæœåºããŸãããïŒ
<?php echo $myBooks->pop(); // 'A Game of Thrones' echo $myBooks->pop(); // 'A Clash of Kings' echo $myBooks->pop(); // 'A Storm of Swords'
ç§ãã¡ãä»æã£ãŠããã®ã¯ã¹ã¿ãã¯ã®ãããã§ããïŒ
<?php echo $myBooks->top(); // 'A Feast for Crows'
popïŒïŒã¡ãœãããå床åŒã³åºããšããã«ã©ã¹ã®east宎ããã¹ã¿ãã¯ããåé€ãããŸãã ããã·ã¥ããŠããã«ãããããŠããã¹ã¿ãã¯ã¯ãæåŸã«ãã°ã€ã³ããæåã«ãã°ã¢ãŠããããããšã«åºã¥ããŠæ©èœãããããã¹ã¿ãã¯ã¯å€æŽãããŸããã ã¹ã¿ãã¯ããã¢ã€ãã ããã«ãç¶ãããšãé ããæ©ãããã¹ã¿ãã¯ã空ã§ãããšããã¡ãã»ãŒãžãšãšãã«äŸå€ãåãåããŸãã
SPLStack
PHPïŒSPLæ¡åŒµïŒã¯ãããŒãžã§ã³5.3以éã®SplStackãå«ãããŸããŸãªããŒã¿æ§é ã®å®è£ ãæäŸããŸãã ReadingListãç¶æ¿ããã ãã§äœæã§ããŸãã
<?php class ReadingList extends SplStack { }
SplStackã«ã¯ãå埩ãå®è£ ããèœåïŒã¹ã¿ãã¯å ã®èŠçŽ ã®æ°ïŒãæã€äºéãªã³ã¯ãªã¹ããå®è£ ãããŠããããã以åã«å®çŸ©ãããããå°ãå€ãã®ã¡ãœãããæäŸãããŸãã
æ¬è³ªçã«ç°ãªãæœè±¡æ§é ã§ãããªã³ã¯ãªã¹ãã¯ãããŒãã®ãªã¹ãã§ãããåããŒãã«ã¯æ¬¡ã®ãªããžã§ã¯ããžã®ãã€ã³ã¿ãŒããããŸãã ãã®æ§é ã¯ãåæ¹åã®åæã䜿çšããŠãã®ããã«è¡šãããšãã§ããŸãã

äºéãªã³ã¯ãªã¹ãã§ã¯ãåããŒãã«2ã€ã®ãã€ã³ã¿ãŒããããŸã-ãªã¹ãå ã®åã®ããŒããšæ¬¡ã®ããŒããžã ãã®æ§é ã«ããã次ã®2ã€ã®æ¹åã«æ€çŽ¢ã§ããŸãã

èŠçŽ ã調ã¹ãŠããªã¹ãå šäœãã©ãã§çµããããç¥ãå¿ èŠããããŸãããã®ããã«ãå éšã§åãæ¶ãç·ãåŒããèŠçŽ ã䜿çšããŸãã
ãã¥ãŒ
ããã§ããæåã«æ¥ããæåã«åºãããŸãã¯FIFOã«è¡ããŸããã æ¬åœã®ã©ã€ã³ãããã«ç«ã£ã人ã¯èª°ã§ããæåã®å Žæãåã£ã人ãæåã«å»ãããšãç¥ã£ãŠããŸãã
ãã¥ãŒã®åºæ¬æäœã¯æ¬¡ã®ãšããã§ãã
- init-ãã¥ãŒãäœæããŸãã
- enqueue-èŠçŽ ããã¥ãŒã®æåŸïŒæ«å°ŸïŒã«è¿œå ããŸãã
- ããã¥ãŒ-ãã¥ãŒã®å é ïŒèŠçŽ ïŒããèŠçŽ ãåé€ããŸãã
- isEmpty-空ã®ãã¥ãŒããã§ãã¯ããŸãã
PSããããŒã°ã«ç²ŸéããŠãã人ã®ããã«-ãã®å Žåãå°Ÿã¯é ãé€ããŠããªã¹ãã®ãã¹ãŠã®èŠçŽ ãå«ãã§ããŸããã
PHPã¯SplQueueã¯ã©ã¹ïŒäºéãªã³ã¯ãªã¹ãïŒãæäŸããŸãããã®å Žåã®ã¿ããªã¹ãã®å é ãæåŸã®èŠçŽ ã«ãªããŸãã ReadingListããã¥ãŒãšããŠå®çŸ©ããŸãã
<?php class ReadingList extends SplQueue { } $myBooks = new ReadingList(); // $myBooks->enqueue('A Game of Thrones'); $myBooks->enqueue('A Clash of Kings'); $myBooks->enqueue('A Storm of Swords');
SplQueueã¯SplDoublyLinkedListãç¶æ¿ããã¢ã¯ã»ã¹ã€ã³ã¿ãŒãã§ã€ã¹ãé åãšããŠå®è£ ãããããé åãä»ããŠãã¥ãŒããã³ã¹ã¿ãã¯ã«ã¢ã¯ã»ã¹ã§ããŸãã
<?php $myBooks[] = 'A Feast of Crows'; $myBooks[] = 'A Dance with Dragons';
ãã¥ãŒããããã€ãã®èŠçŽ ãåé€ããŸãã
<?php echo $myBooks->dequeue() . "\n"; // 'A Game of Thrones' echo $myBooks->dequeue() . "\n"; // 'A Clash of Kings'
enqueueïŒïŒã¯pushïŒïŒã®ãšã€ãªã¢ã¹ã§ããã dequeueïŒïŒã¯popïŒïŒã®ãšã€ãªã¢ã¹ã§ã¯ãããŸãã ïŒ popïŒïŒã¯ãã¥ãŒã®ã³ã³ããã¹ãã§ç°ãªãåäœãããŸããpopïŒïŒã䜿çšãããšããã¥ãŒã®æ«å°ŸããèŠçŽ ãåé€ãããããïŒA Dance with DragonsïŒããã¥ãŒã®äž»ãªãã®ã¯FIFOã«ãŒã«ã§ããããã§ãã
bottomïŒïŒã¡ãœããã䜿çšããŠããªã¹ãã®å é ã«ããèŠçŽ ãïŒåé€ããã«ïŒç¢ºèªã§ããŸãã
<?php echo $myBooks->bottom() . "\n"; // 'A Storm of Swords'
æšã
éåžžãADTã³ã³ãããŒã«ã¯ãæ§é ãžã®èŠçŽ ã®æ¿å ¥ãæ§é ããã®èŠçŽ å€ã®åé€ãšååŸã®3ã€ã®æäœã«ãªããŸãã ã¹ã¿ãã¯ãšãã¥ãŒã®å Žåããããã®æäœã¯äœçœ®äŸåïŒxIFOïŒã§ãã ããããå€ã§æ å ±ãååŸããå¿ èŠãããå Žåã¯ã©ãã§ããããïŒ
ãã®ãããªãã¬ãŒãããããšæ³åããŠãã ããïŒèŠçŽ ã®é åºã¯é¢ä¿ãããŸããïŒïŒ

æããã«ããã®å Žåãã¹ã¿ãã¯ãŸãã¯ãã¥ãŒã¯åœ¹ã«ç«ããªãã§ãããããªããªããå¿ èŠãªå Žåã¯ãã¹ãŠã®å€ããã€ãã¹ããå¿ èŠãããããã§ãã å¿ èŠãªã¢ã€ãã ããªã¹ãã«ãããšããŸãã 次ã«ãæ€çŽ¢ã®ããã«ãå¹³åã§n / 2åã®èŠçŽ ïŒnã¯ãªã¹ãå šäœã®é·ãïŒãæ€çŽ¢ããå¿ èŠããããŸãã ããå€ãã®ãªã¹ã-ãã€ãã¹ã«ãããæéãé·ããªããŸãã ãã®æ€çŽ¢ã®åé¡ã解決ããã«ã¯ãæ§é ã«ããæ€çŽ¢ãç°¡çŽ åãããããã«ãäœããã®æ¹æ³ã§ããŒã¿ãé 眮ããå¿ èŠããããŸãã ãããŠãããã«æšãçŸããŸãã
ãã®æ§é ã®æœè±¡çãªäŸã¯ã次ã®æäœãæã€ããŒãã«ã§ãã
- create-空ã®ããŒãã«ãäœæããŸãã
- æ¿å ¥-ããŒãã«ã«èŠçŽ ãè¿œå ããŸãã
- delete-ããŒãã«ããã¢ã€ãã ãåé€ããŸãã
- æ€çŽ¢-ããŒãã«å ã®èŠçŽ ãæ€çŽ¢ããŸãã
ã¯ããããã¯ãããªãŒãšããŒã¿ããŒã¹ãå¯æ¥ã«é¢é£ããŠãããããããŒã¿ããŒã¹ã®ããç¥ãããŠããCRUD ïŒèªã¿åããæŽæ°ãåé€ã®äœæïŒã«äŒŒãŠããŸãã
ããŒãã«ãè¡šã1ã€ã®æ¹æ³ã¯ç·åœ¢ã§ãã è¡ããšã«èª¬æããŸãã ãã®ãããªã¬ã³ãŒãã¯ããœãŒããã·ãŒã±ã³ã·ã£ã«ïŒã€ãŸããå¶éãããé·ããŸãã¯ç°ãªãé·ããåºåãæåä»ãã®ã¬ã³ãŒãïŒããŸãã¯é¢é£ïŒããŒã¿ãžã®ãã€ã³ã¿ãŒã䜿çšïŒã§ããŸãã ããã¯ãåæã®ããŒã¿ããŒã¹ãšãã¡ã€ã«ã·ã¹ãã ïŒFATãªã©ïŒã®å Žåã§ããã ãã ããã·ãŒã±ã³ã·ã£ã«èšé²ã«ã¯ãã€ãã¹ããããŸããããŒã¿ã®æ¿å ¥ãšåé€ã«ã¯äžåãã§ããããªã³ã¯ãããèšé²ã§ã¯æ°ããããŒã¿ã«ã¹ããŒã¹ãåçã«å²ãåœãŠãããšãã§ããŸãã ãŸããåºå®é·ã®ã·ãŒã±ã³ã·ã£ã«é²ç»ã¯ããªã³ã¯é²ç»ãããå¹ççã§ã¯ãããŸããã ãããã£ãŠããã€ããªæ€çŽ¢ããªãŒã®å Žåã¯ãé¢é£ã¬ã³ãŒããéžæããããšããå§ãããŸãã
ããªãŒã¯ãŸãã«éç·åœ¢æ€çŽ¢ã®å®è£ ã§ãããã·ãŒã±ã³ã·ã£ã«ãšæ¥ç¶ã®2ã€ã®ã¿ã€ãã®ããå¹æçãªæ©èœãæäŸãããã¹ãŠã®ããŒãã«æäœããµããŒãããŸãã ãã®ãããææ°ã®ããŒã¿ããŒã¹ã®å€ãã¯æ£ç¢ºã«ããªãŒã䜿çšããŠããŸãïŒMyISAMã¯ã€ã³ããã¯ã¹ã«ããªãŒã䜿çšããŠããŸãïŒã

ãã®å³ãããããããã«ãããªãŒã¯ããŒãéã«èŠªâåã®é¢ä¿ãããéå±€æ§é ã§ãã åå«ã®ãªãããŒãã¯çµäºããŒãïŒãªãŒãïŒã芪ã®ãªãåå«ã¯ããªãŒã®ã«ãŒããããŒãéã®æ¥ç¶ã¯ãšããžã§ãã 2ã€ã®åå«ãæã€ããŒãã¯æãåçŽãªããªãŒã§ãããããã«åºã¥ããŠããã®ãããªããŒãã®ååž°ãªã¹ããšããŠããªãŒãè¡šãããšãã§ããŸãã æ§é å ã®ããªãŒã¯äºéã«ãªã³ã¯ããããªã¹ãã«äŒŒãŠããããšã«æ³šæããŠãã ããã
ãããã£ãŠãããªãŒã¯æ¬¡ã®ããã«èª¬æã§ããŸãã
<?php class BinaryNode { public $value; // public $left; // BinaryNode public $right; // BinaryNode public function __construct($item) { $this->value = $item; // - $this->left = null; $this->right = null; } } class BinaryTree { protected $root; // public function __construct() { $this->root = null; } public function isEmpty() { return $this->root === null; } }
æ°ããå€ãæ¿å ¥
æ°ããå€ãæ¿å ¥ããããšã¯ããã§ã«ã¯ããã«èå³æ·±ããããã¯ã§ãã ããªãŒã®å転ãšãã©ã³ã¹ã«åºã¥ããŠããã®åé¡ã«ã¯ããã€ãã®è§£æ±ºçããããããŸããŸãªã¿ã¹ã¯ã«å¯ŸããŠãããªãŒã®æ¿å ¥ãåé€ãããã³ãã©ããŒã¹ã®æäœã§ããã©ãŒãã³ã¹ã€ã³ãžã±ãŒã¿ãŒãç°ãªãèµ€é»ãAVLãŸãã¯BããªãŒãªã©ãããŸããŸãªããªãŒå®è£ ã䜿çšã§ããŸãã
ç°¡åã«ããããã«ãæãåçŽãªå®è£ ã®ããã€ãã®ã«ãŒã«ã瀺ããŸããçŸåšã®å€ãããå°ãããã®ã¯ãã¹ãŠå·Šã«ãããå€ãã¯å³ã«ç§»åããŸãã
ç¹°ãè¿ãã¯é€å€ãããŸãïŒ
- ããªãŒã空ã®å ŽåãããªãŒã®ã«ãŒããšããŠ[new_node]ãæ¿å ¥ããŸãïŒæããã«ïŒïŒ
- ããããªãïŒããªãŒã¯ç©ºã§ã¯ãããŸããïŒïŒ
- 2aã ïŒ[çŸåšã®ããŒã]ã空ã®å ŽåïŒ-ããã«è²Œãä»ããŠåæ¢ããŸãã
- 2bã IfïŒ[new_node]> [current node]ïŒ-[new_node]ãå³åŽã«æ¿å ¥ããŠãã¹ããã2ãç¹°ãè¿ããŸã
- 2cã IfïŒ[new_node] <[current node]ïŒ-å·ŠåŽã«[new_node]ãæ¿å ¥ããŠãã¹ããã2ãç¹°ãè¿ããŸã
- 2dã ãã以å€ã®å Žåãå€ã¯ãã§ã«ããªãŒã«ãããŸã
<?php class BinaryTree { ... public function insert($item) { $node = new BinaryNode($item); if ($this->isEmpty()) { // 1 $this->root = $node; } else { // 1 $this->insertNode($node, $this->root); } } protected function insertNode($node, &$subtree) { if ($subtree === null) { // 2 $subtree = $node; } else { if ($node->value > $subtree->value) { // 2b $this->insertNode($node, $subtree->right); } else if ($node->value < $subtree->value) { // 2c $this->insertNode($node, $subtree->left); } else { // , 2d } } } }
ããŒãã®åé€ã¯ãŸã£ããå¥ã®è©±ã§ããã圱é¿ãåããŸããã ãã¶ãä»ã®æéã
æšã®æ£æ©
ã«ãŒãããéå§ããããªãŒã1ã€ãã€æ€çŽ¢ããŠç©ºã®ããŒããèŠã€ããæ¹æ³ãæãåºããŠãã ããã 4ã€ã®äž»èŠãªããªãŒãã©ããŒãµã«æŠç¥ããããŸãã
- äºå泚æïŒçŽæ¥æ³šæïŒ-çŸåšã®ããŒããåŠçããŠãããå·Šå³ã«ç§»åããŸãã
- é åºïŒå¯Ÿç§°ïŒ-æåã«å·ŠåŽãééããçŸåšã®ããŒããåŠçããŠå³åŽããã€ãã¹ããŸãã
- post-order-å·Šå³ãéã«ããŠãããçŸåšã®å€ãåŠçããŸãã
- level-orderïŒwideïŒ-çŸåšã®å€ãåŠçããŠãããåå«ãåŠçããŠæ¬¡ã®ã¬ãã«ã«ç§»åããŸãã
æåã®3ã€ã®æŠç¥ã¯ãããªãŒã®ã«ãŒãïŒãŠã§ã«ããŸãã¯ããŒããšããŠæå®ãããããŒãïŒããå§ãŸããå¯èœãªéãæ·±ãããªãŒãééããŠæ»ãåã®ãã£ãŒããŠã©ãŒã¯ãšåŒã°ããŸãã ãããã®æŠç¥ã¯ããããç°ãªãç®çã«äœ¿çšãããŸãã ããšãã°ãæ°ããããŒããæ¿å ¥ãããšãïŒç§ãã¡ã®å ŽåïŒãŸãã¯ãµãããªãŒãã³ããŒãããšããéã®å Žå-éã«ãããªãŒããããŒããåé€ãããšããçŽæ¥é åºã䜿çšãããŸãã
察称ããã»ãŒãžãã©ã®ããã«æ©èœããããç解ããã«ã¯ãäŸãå°ãä¿®æ£ããå¿ èŠããããŸãã
<?php class BinaryNode { ... // public function dump() { if ($this->left !== null) { $this->left->dump(); } var_dump($this->value); if ($this->right !== null) { $this->right->dump(); } } } class BinaryTree { ... public function traverse() { // $this->root->dump(); } }
ãããã«
çµè«ãèªãã§ãããçãããããå°ãããã¹ããšåçã«æè¬ããŸã:)
SplStack ã SplQueueãããã³äºéãªã³ã¯ãªã¹ãã®å®è£ ãå®å šã«ã«ããŒãããŠããªãããšã«æ³šæããŠãã ããã èŠçŽ ã®æ°ãã«ãŠã³ãããããå埩åãšããŠæ§é äœã䜿çšããããããªã©ãå€ãã®ã¡ãœãããPHPããã¥ã¡ã³ãã«é ãããŠããŸãã
kpuzucã® ãã®èšäºã«ã泚æãæã䟡å€ããããŸãã
ãããã®æ§é ã®å¯èŠåã Tangroããã®æçš¿ã§èŠã€ããããšãã§ãããªã³ã¯
ããããã³ããŒããããããã®æ§é ã®å®è£ ã®ããã©ãŒãã³ã¹ã®ãã³ãããŒã¯
ã芧ãã ãã 








ãã¥ãŒã«é¢ããŠã¯ãSPLãåªå ããéžæã¯ããªãæçœã§ãã ã¹ã¿ãã¯ã®å®è£ ã¯å®éã«ã¯é åãããåªããŠããããã§ã¯ãªãã1ç§ãããã®æäœæ°ã«ãã£ãŠäºéã«ãªã³ã¯ããããªã¹ããé åã«å€±ãããŸãã æ£çŽã«èšããšãç§ã¯ãã¹ããæãäžããªãã£ãã®ã§ããããäœã«é¢é£ããŠããã®ãç¥ãããã®ã§ããããé£æ¥ãããã€ã³ã¿ãŒãã§ãŒã¹ããæ¡åŒµããããŠãããšããäºå®ããããŸãã
PSãã€ãã®ããã«ãPMã®ããã¹ãã®èª€ããšãªãªãžãã«ã®ç¿»èš³ã¯åãå ¥ããããŸãã