Un réseau de commutation (le nom est inventé) est constitué de trois types de nœuds:
- un nœud de démarrage
- un nœud d'extrémité
- un ou plusieurs nœuds Switch
Le nœud de commutation a 3 sorties: Gauche, Haut, Droite; a deux états L et R et un état cible TL ou TR . Chaque commutateur peut être traversé avec les règles suivantes:
- toujours de gauche à haut; l'état du commutateur passe à L
- toujours de droite à en haut; l'état du commutateur passe à R
- de haut en gauche uniquement si le commutateur est dans l'état L; l'état ne change pas
- de Haut à Droite si le commutateur est dans l'état R; l'état ne change pas
- jamais de gauche à droite ou de droite à gauche
Figure 1. Commutez le nœud dans l'état L avec l'état cible TR
Ces propriétés contiennent également:
- 0, 1 ou 2 des sorties d'un interrupteur peuvent être isolées (non connectées à un autre interrupteur);
- un chemin peut simplement "toucher" un interrupteur pour changer son état: entrer de gauche et sortir de gauche ou entrer de droite et sortir de droite;
- il n'y a aucune restriction sur le nombre de fois qu'un interrupteur peut être traversé / touché.
Le problème de décision est: "Existe-t-il un chemin du nœud de début au nœud de fin de sorte que tous les états finaux des commutateurs correspondent à l'état cible correspondant?"
Évidemment, tous les commutateurs qui ne sont pas initialement dans leur état cible doivent être traversés (ou touchés) au moins une fois;
Ceci est un dessin rapide d'un réseau trivial (fait avec Excel ... je vais en faire un meilleur):
Une solution triviale est:
S -> 1 -> 2 -> 3 -> 2 -> E -> 1 -> E
EDIT 2:
- Ce problème est-il connu? ---> vous m'avez donné la bonne référence à la thèse de Hearn (graphes de contraintes);
Le problème est dans ; avant de poster un croquis de ma preuve qu'il est en NP, j'ai trouvé une erreur; donc les questions ouvertes sont à nouveau:
2. Est - ce ?
3. Le problème a-t-il une chance d'être ?
la source
Réponses:
Le problème est au moins NP-difficile, par une réduction de 3-SAT.
Considérez d'abord le problème de trouver un chemin du début à la sortie du graphique dirigé suivant avec la restriction qu'aucun chemin ne peut visiter les trois nœuds (carrés) d'une clause:
Nous transformons ces graphiques en un réseau de commutateurs. Pour cela, nous utilisons trois gadgets:
Dans les illustrations suivantes, les commutateurs sont dessinés sous la forme de deux flèches entrantes, dont l'une est pointillée (désactivée). La direction cible est dessinée avec un cercle noir (de telle sorte que la flèche pleine doit finalement être sur le côté du cercle).
Remarque: Nous utiliserons des caractères gras pour distinguer la sortie du graphique des sorties de gadgets.
Rappelons que pour le graphique d'origine, trouver un chemin qui a conduit à la sortie et n'a pas visité les trois nœuds carrés d'une clause était NP-complet. Considérons maintenant le problème de l'atteinte de la sortie du graphe transformé sans se soucier des positions cibles des commutateurs.
Observez que tout chemin qui est une solution au problème de graphe d'origine est également une solution pour le graphe transformé. Supposons donc qu'un chemin pour le graphe transformé ne soit pas une solution pour le graphe d'origine. Cela peut se produire dans deux cas:
Dans le premier cas, le gadget unidirectionnel doit d'abord avoir été parcouru dans la direction souhaitée, auquel cas le chemin aurait tout aussi bien pu éviter de le traverser en premier lieu.
Considérez donc le deuxième cas où le chemin traverse les trois commutateurs d'un gadget Clause . Ensuite, ce gadget aura ses trois commutateurs inversés (voir ci-dessous). C'est là que nous utilisons les positions cibles. Notez que l' épine dorsale grise du gadget Clause ne peut plus être atteinte, ce qui signifie que les commutateurs ne peuvent plus être dirigés vers leurs positions cibles. Dans ce cas, nous disons que ce gadget de clause est irrécupérable.
Il reste à montrer que pour toute solution du problème de graphe d'origine, les interrupteurs du graphe transformé peuvent être placés dans leur position cible. Pour cela, nous utilisons le fait que le fil de sortie ne peut être atteint que lorsqu'il existe une solution, ou qu'un gadget Clause devient irrécupérable.
Pour placer les commutateurs dans leur position cible, nous pouvons maintenant ajouter des gadgets unidirectionnels supplémentaires du fil de sortie à l'entrée de chaque gadget unidirectionnel existant , ainsi qu'aux trois fils de sortie de tous les gadgets de clause . Ensuite, une fois que le jeton atteint la sortie , tous les gadgets unidirectionnels supplémentaires peuvent être parcourus (et ainsi placés dans leur position cible), et également placer les commutateurs restants dans leurs positions cibles (sauf s'il existe une clause irrécupérable). Enfin, le jeton peut retourner à la sortie et le puzzle est résolu.
Nous devons remarquer que les gadgets Clause ne peuvent être récupérés que lorsqu'ils sont entrés à partir d'une sortie non traversée; et en raison des gadgets unidirectionnels qui sont placés entre les gadgets Clause et la variable suivante, cela ne peut se produire que lorsque le fil de sortie est atteint.
Par conséquent, le problème du réseau de commutation est NP-difficile.
On ne sait toujours pas si le problème est en NP ou PSPACE-hard. Une réduction de la dureté NP en construisant un réseau de commutateurs plan aura de grandes implications pour les variantes restreintes de Sokoban, notamment parce que tous les commutateurs sont équivalents au gadget Sokoban ci-dessous.
la source