Show / Hide Table of Contents

    Class SequenceWalker

    Inheritance
    Object
    SequenceWalker
    Inherited Members
    Object.Equals(Object)
    Object.Equals(Object, Object)
    Object.GetHashCode()
    Object.GetType()
    Object.MemberwiseClone()
    Object.ReferenceEquals(Object, Object)
    Object.ToString()
    Namespace: Platform.Data.Sequences
    Assembly: Platform.Data.Sequences.dll
    Syntax
    public static class SequenceWalker
    Remarks

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

    Решить объединять ли логику в одну функцию, или оставить 4 отдельных реализации? Решить встраивать ли защиту от зацикливания. Альтернативой защиты от закливания может быть заранее известное ограничение на погружение вглубь. А так же качественное распознавание прохода по циклическому графу. Ограничение на уровень глубины рекурсии может позволить использовать уменьшенный размер стека. Можно использовать глобальный стек (или несколько глобальных стеков на каждый поток).

    Methods

    | Improve this Doc View Source

    WalkLeft<TLinkAddress>(TLinkAddress, Func<TLinkAddress, TLinkAddress>, Func<TLinkAddress, TLinkAddress>, Func<TLinkAddress, Boolean>, Action<TLinkAddress>)

    Declaration
    public static void WalkLeft<TLinkAddress>(TLinkAddress sequence, Func<TLinkAddress, TLinkAddress> getSource, Func<TLinkAddress, TLinkAddress> getTarget, Func<TLinkAddress, bool> isElement, Action<TLinkAddress> visit)
    Parameters
    Type Name Description
    TLinkAddress sequence
    Func<TLinkAddress, TLinkAddress> getSource
    Func<TLinkAddress, TLinkAddress> getTarget
    Func<TLinkAddress, Boolean> isElement
    Action<TLinkAddress> visit
    Type Parameters
    Name Description
    TLinkAddress
    | Improve this Doc View Source

    WalkRight<TLinkAddress>(TLinkAddress, Func<TLinkAddress, TLinkAddress>, Func<TLinkAddress, TLinkAddress>, Func<TLinkAddress, Boolean>, Action<TLinkAddress>)

    Declaration
    public static void WalkRight<TLinkAddress>(TLinkAddress sequence, Func<TLinkAddress, TLinkAddress> getSource, Func<TLinkAddress, TLinkAddress> getTarget, Func<TLinkAddress, bool> isElement, Action<TLinkAddress> visit)
    Parameters
    Type Name Description
    TLinkAddress sequence
    Func<TLinkAddress, TLinkAddress> getSource
    Func<TLinkAddress, TLinkAddress> getTarget
    Func<TLinkAddress, Boolean> isElement
    Action<TLinkAddress> visit
    Type Parameters
    Name Description
    TLinkAddress
    • Improve this Doc
    • View Source
    Back to top Generated by DocFX