• per-particle score computed by the tri-kernel
  • the fixed point φ* of the composite operator: diffusion + springs + heat kernel
  • φ* = norm[λ_d · D(φ) + λ_s · S(φ) + λ_h · H_τ(φ)]
  • integrates exploration (diffusion), structural consistency (springs), and adaptive context (heat)
  • probability of particle observation by random walking neuron, weighted on attention and will
  • fundamental factor of implicit knowledge
  • evolution from pagerank
    • pagerank is diffusion-only (one kernel). cyberank is the full tri-kernel
    • featurepagerankcyberank
      input structuredirected graph with edges indicating linkscybergraph
      operatorsdiffusion onlydiffusion + springs + heat kernel
      damping factortypically set to 0.85consensus parameter
      link representationedges with equal weightattention and will token, three scalars (h, d, c)
      handling dangling nodesdistributed uniformly among all nodesadjusted rank calculation considering dangling nodes explicitly
      rank initializationuniformly distributed initial ranksstarts with all ranks initialized to zero
      normalizationensures rank sum equals oneimplicit normalization through rank adjustments and damping factor
      localityglobal recomputebounded locality: O(deg(v)) per update
  • pseudocode in python (diffusion component, legacy reference)
    • import functools
      import operator
      import collections
      def cyberank(cyberlinks: list, tolerance: float = 0.001, damping_factor: float = 0.8):
          cyberlinks_dict = dict(functools.reduce(operator.add, map(collections.Counter, cyberlinks)))
          objects = list(set([item for t in [list(x.keys())[0] for x in cyberlinks] for item in t]))
          rank = [0] * len(objects)
          size = len(objects)
          default_rank = (1.0 - damping_factor) / size
          dangling_nodes = [obj for obj in objects if obj not in [list(cyberlink.keys())[0][1] for cyberlink in cyberlinks]]
          dangling_nodes_size = len(dangling_nodes)
          inner_product_over_size = default_rank * (dangling_nodes_size / size)
          default_rank_with_correction = (damping_factor * inner_product_over_size) + default_rank
          change = tolerance + 1
          steps = 0
          prevrank = [0] * len(objects)
      while change > tolerance:
          for obj in objects:
              obj_index = objects.index(obj)
              ksum = 0
              income_cyberlinks = [income_cyberlink for income_cyberlink in [list(x.keys())[0] for x in cyberlinks] if income_cyberlink[1] == obj]
              for cyberlink in income_cyberlinks:
                  linkStake = cyberlinks_dict[cyberlink]
                  outcome_cyberlinks = [outcome_cyberlink for outcome_cyberlink in [list(x.keys())[0] for x in cyberlinks] if outcome_cyberlink[0] == cyberlink[0]]
                  jCidOutStake = sum([cyberlinks_dict[outcome_cyberlink] for outcome_cyberlink in outcome_cyberlinks])
                  if linkStake == 0 or jCidOutStake == 0:
                      continue
                  weight = linkStake / jCidOutStake
                  ksum = prevrank[obj_index] * weight + ksum
              rank[obj_index] = ksum * damping_factor + default_rank_with_correction
          change = abs(max(rank) - max(prevrank))
          prevrank = rank
          steps += 1
      res = list(zip(objects, rank))
      res.sort(reverse=True, key=lambda x: x[1])
      return res
  • go-cyber implementation of cyberank in go
  • cyberank is being used as factor in
  • display cyberank in apps
    • 🦠 emoji icon virus
    • examples
      • full number: 176 711 938 🦠
      • game number: 176 🦠🦠🦠
  • discover all concepts