FRODO Version 2.19.1
An open-source framework for Distributed Constraint Optimization (DCOP)
Loading...
Searching...
No Matches
frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E > Class Template Reference

P2-DPOP's variable re-ordering algorithm. More...

Inheritance diagram for frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >:

Classes

class  VariableInfo
 Convenient class to store information about a variable of this agent. More...
class  SecureRootingMsg
 Message used to tell a variable that it is the new root of its component. More...

Public Member Functions

 SecureRerooting (DCOPProblemInterface<?, C > problem, Element params)
 Constructor.
void setQueue (Queue queue)
Collection< MessageTypegetMsgTypes ()
void notifyIn (Message msg)
Decision notifyOut (Message msg)
 Re-encrypts vector messages the first time they leave the agent.
Public Member Functions inherited from frodo2.communication.IncomingMsgPolicyInterface< T >
default void notifyIn (Message msg, Object toAgent)
 Notifies the listener of an incoming message.
Public Member Functions inherited from frodo2.communication.OutgoingMsgPolicyInterface< T >
default Decision notifyOut (Object fromAgent, Message msg)
 Notifies the listener of an outgoing message.
default Decision notifyOut (Object fromAgent, Message msg, Collection<? extends Object > toAgents)
 Notifies the listener of an outgoing message.
default Decision notifyOut (Message msg, Collection<? extends Object > toAgents)
 Notifies the listener of an outgoing message.

Static Public Attributes

static MessageType OUTPUT = new MessageType ("P3/2-DPOP", "SecureRerooting", "NewRoot")
 Type of output of the secureRerooting module.
static final MessageType DONE = new MessageType ("P3/2-DPOP", "SecureRerooting", "Done")
 Token type telling the reroot of the dfs can be executed now.
static final MessageType VECTOR_TYPE = new MessageType ("P3/2-DPOP", "SecureRerooting", "Vector")
 The type of the message containing an ordering vector.
static final MessageType REROOTING_REQUEST_TYPE = new MessageType ("P3/2-DPOP", "SecureRerooting", "RerootRequest")
 The type of the messages sent to request a rerooting of the variable order.

Private Member Functions

void init ()
 Initiate the module.
void passOn (VariableInfo info, ArrayList< E > vector, String owner, final short round)
 Sends a vector to the previous variable in the linear ordering.
void processVectorMsg (VariableInfo info, VectorMsg< C, E > msg)
 Processes a received vector message.

Private Attributes

final C rootElement
 Set to 0, to identify the root of the component in the vector.
final C notRootElement
 Set to 1, for non-root variables in the vector.
final C fakeElement
 Set to 2, for fake variables in the vector.
Random rand = new SecureRandom()
 Random generator.
Map< String, VariableInfoinfos
 All information about the variables owned by this agent.
HashMap< VectorMsg< C, E >, VariableInfovectorSent = new HashMap< VectorMsg<C, E>, VariableInfo > ()
 A set of vector messages sent, used to detect when one leaves the agent, so as only to re-encrypt it then.
Queue queue
 Queue where messages are received.
boolean started = false
 true if this module has started
DCOPProblemInterface<?, C > problem
 The problem interface.

Detailed Description

P2-DPOP's variable re-ordering algorithm.

This is the InitializeOrder() and ShiftOrder() procedures from the following paper, modified so as not to re-shuffle at every iteration:

Thomas Leaute and Boi Faltings. Privacy-preserving multi-agent constraint satisfaction. In Proceedings of the 2009 IEEE International Conference on PrivAcy, Security, riSk and Trust (PASSAT'09), Vancouver, British Columbia, August 29-31 2009. IEEE Computer Society Press.

Author
Eric Zbinden, Thomas Leaute
Parameters
<C>class used for clear text vector element
<E>class used for encrypted vector element
Todo
It is inefficient to use bit-array-based ElGamalBigIntegers, because we don't need (partial) additive homomorphism

Constructor & Destructor Documentation

◆ SecureRerooting()

frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.SecureRerooting ( DCOPProblemInterface<?, C > problem,
Element params )

Constructor.

Parameters
problemthe agent's subproblem
paramsthe parameters of the module

References problem, and SecureRerooting().

Referenced by SecureRerooting().

Here is the call graph for this function:

Member Function Documentation

◆ getMsgTypes()

◆ init()

void frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.init ( )
private

Initiate the module.

References infos, problem, and started.

Referenced by notifyIn().

◆ notifyIn()

◆ notifyOut()

◆ passOn()

void frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.passOn ( VariableInfo info,
ArrayList< E > vector,
String owner,
final short round )
private

Sends a vector to the previous variable in the linear ordering.

Parameters
infothe sender variable
vectorthe vector
ownerthe codename of the initial sender of the vector
roundthe round

References frodo2.algorithms.dpop.privacy.SecureCircularRouting.PREVIOUS_MSG_TYPE, frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.VariableInfo.self, and frodo2.communication.Queue.sendMessageToSelf().

Referenced by processVectorMsg().

Here is the call graph for this function:

◆ processVectorMsg()

void frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.processVectorMsg ( VariableInfo info,
VectorMsg< C, E > msg )
private

◆ setQueue()

Member Data Documentation

◆ DONE

final MessageType frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.DONE = new MessageType ("P3/2-DPOP", "SecureRerooting", "Done")
static

Token type telling the reroot of the dfs can be executed now.

Referenced by frodo2.algorithms.dpop.privacy.DoneMsg.DoneMsg(), and notifyIn().

◆ fakeElement

◆ infos

Map<String,VariableInfo> frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.infos
private

All information about the variables owned by this agent.

Referenced by init().

◆ notRootElement

final C frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.notRootElement
private

◆ OUTPUT

◆ problem

DCOPProblemInterface<?, C> frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.problem
private

The problem interface.

Referenced by init(), and SecureRerooting().

◆ queue

Queue frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.queue
private

Queue where messages are received.

Referenced by processVectorMsg(), and setQueue().

◆ rand

Random frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.rand = new SecureRandom()
private

Random generator.

◆ REROOTING_REQUEST_TYPE

final MessageType frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.REROOTING_REQUEST_TYPE = new MessageType ("P3/2-DPOP", "SecureRerooting", "RerootRequest")
static

◆ rootElement

final C frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.rootElement
private

◆ started

boolean frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.started = false
private

true if this module has started

Referenced by init(), and notifyIn().

◆ VECTOR_TYPE

◆ vectorSent

HashMap< VectorMsg<C, E>, VariableInfo > frodo2.algorithms.dpop.privacy.SecureRerooting< C extends Addable< C >, E extends AddableLimited< C, E >.vectorSent = new HashMap< VectorMsg<C, E>, VariableInfo > ()
private

A set of vector messages sent, used to detect when one leaves the agent, so as only to re-encrypt it then.


The documentation for this class was generated from the following file: