AIXI.CTWContextTreeFast.UpdateLogProbability C# (CSharp) Метод

UpdateLogProbability() публичный Метод

public UpdateLogProbability ( int index ) : void
index int
Результат void
        public void UpdateLogProbability(int index)
        {
            if (this.IsLeaf(index))
            {
                this.Nodes[index].LogProbability = this.Nodes[index].LogKt;
            }
            else
            {
                double logChildProbability = 0;
                int lchild = this.Nodes[index].Child1 ;
                if (lchild != -1) {
                    logChildProbability += this.Nodes[lchild].LogProbability;
                }
                int rchild = this.Nodes[index].Child0;
                if (rchild != -1)
                {
                    logChildProbability += this.Nodes[rchild].LogProbability;
                }

                //for better numerical results
                double a = Math.Max(this.Nodes[index].LogKt, logChildProbability);
                double b = Math.Min(this.Nodes[index].LogKt, logChildProbability);

                this.Nodes[index].LogProbability = Math.Log(0.5) + a + Utils.Log1P(Math.Exp(b - a));
                //todo: is it fast enough to compute Math.Log(0.5) every time. Joel has it cached.
            }
        }