Есть ли пустое (пустое) значение в Numeric в labview?

Лучше, чем алгоритм Флойда

Ричард Брент описал алгоритм обнаружения альтернативного цикла , который в значительной степени похож на зайца и черепаху [цикл Флойда ], за исключением того, что медленный узел здесь не перемещается, а затем «телепортируется» в положение быстрого узла с фиксированными интервалами.

Описание доступно здесь: http://www.siafoo.net/algorithm/11 Брент утверждает, что его алгоритм на 24-36% быстрее, чем алгоритм цикла Флойда. O (n), сложность пространства O (1).

public static boolean hasLoop(Node root){
    if(root == null) return false;

    Node slow = root, fast = root;
    int taken = 0, limit = 2;

    while (fast.next != null) {
        fast = fast.next;
        taken++;
        if(slow == fast) return true;

        if(taken == limit){
            taken = 0;
            limit <<= 1;    // equivalent to limit *= 2;
            slow = fast;    // teleporting the turtle (to the hare's position) 
        }
    }
    return false;
}

0
задан Reddi ganpathi rao 17 January 2019 в 07:26
поделиться

2 ответа

В LabVIEW не существует такого понятия, как значение «Пустое» для чисел с плавающей запятой, точно так же, как в C #, C ++, Java или C такого понятия нет. Все они используют один и тот же стандарт IEEE для определения значений с плавающей запятой. ,

0
ответ дан srm 17 January 2019 в 07:26
поделиться

Я открыл эту идею для обмена идеями: Создайте «необязательную» оболочку для входного типа в стиле std :: option в C ++ 17.

Это было в значительной степени отклонено, потому что это не подходит для общего пользования, но некоторые идеи относительно того, как вы могли бы реализовать это самостоятельно, обсуждались там (не пропустите вторую страницу).

0
ответ дан chrisb2244 17 January 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: