Smart Social Network Discovery using the POMDP framework.
A report describing this project is located in doc/report.pdf.
The ipython notebooks in notebooks contain basic usage examples.
This code was designed to be used with the POMDPs.jl framework. Unfortunately changes to this framework will probably make this code incompatible, so it will have to be updated to be used in the future. If you would like to resurrect this code and start using it, please contact me at zsunberg(at)stanford.edu.
The MCTS solver used for this is implemented in POMCP.jl.
julia> Pkg.clone("https://github.com/sisl/NetworkDiscovery.jl")
-
CommunityNetwork
represents a social network with each vertex affiliated with a community, aCommunityNetwork
object functions as the state of the POMDP. -
CommunityAffiliationPOMDP
describes an entire problem, with the probing budget, statistical information for generating the network, etc. -
ProbeNode
andGuessAffiliation
are the types that represent actions. TheNeighborhood
type represents the observation.
RevealedGraph
holds all the edges and nodes revealed by probing. This structure is used by both the heuristic policy and the MCTS policy.
-
DiscoveryHeuristic
simply holds a probing policy and an affiliation-guessing policy. On steps 1 through T (see the report), it uses theprobing
policy to decide which vertex to probe; on step T+1, it uses theguess
policy to guess the target node affiliation. -
ProbeHighestDegree
probes the node with the highest revealed degree (see report) -
GuessBasedOnNeighbors
guesses the target node affiliation as described in the report.