Путаница в обозначении массива псевдокодов - PullRequest
1 голос
/ 29 апреля 2019

Я смотрю на какой-то псевдокод для алгоритма.Одна строка псевдокода выглядит следующим образом:

hs <- { (a, b) | a <- m, b <- l }

Где m и l оба являются массивами объектов.

Что это значит точно?Моя интерпретация заключается в том, что он связывает каждый m с каждым l и сохраняет их в массиве hs, например:

Предположим, m = {m1,m2} и l = {l1,l2,l3,l4}.

Тогда hs = {(m1,l1),(m1,l2),(m1,l3),(m1,l4),(m2,l1),(m2,l2),(m2,l3),(m2,l4)}

Правильно ли думать об этом?


Поскольку был запрошен контекст, это псевдокод для проектирования гиперэвристики с использованием выбора колеса рулетки на основе обучения с подкреплением.,m и l содержат массив эвристик мутаций и эвристик локального поиска соответственно.hs предназначен как массив, который объединяет каждую из этих эвристик, чтобы они могли последовательно применяться к проблемной области.Например, примените mutational heuristic m_i, а затем local search heuristic l_j.Просто не ясно, должны ли они быть соединены так, как я описал, или каким-то другим способом.

Ответы [ 3 ]

3 голосов
/ 29 апреля 2019

То, что вы считаете правильным, это список по определению понимания, а (a, b) - это набор со значениями a и b.

Дополнительная информация: https://en.wikipedia.org/wiki/List_comprehension

Пример в haskell: https://wiki.haskell.org/List_comprehension

1 голос
/ 29 апреля 2019

Если эту строку псевдокода следует интерпретировать как математические обозначения для набора, то да, это единственный вероятный вариант ИМХО.

0 голосов
/ 29 апреля 2019

Я думаю, что ваша интерпретация довольно правильная, но это тоже может быть разумным:

Если мы получим ваш пример vars:

hs = ({m1, m2}, {l1, l2, l3, l4})

это можно представить как некоторую координату для дискретного пространства.

Если вы предоставите контекст (или полный псевдокод), мы могли бы сделать более точную интерпретацию

...