per rendere più semplice la visualizzazione di questa domanda, chiamiamola "il problema della mesh di pollo".
Supponiamo di avere un gallo e un numero (supponiamo che sia 30) di polli baby.
Obiettivo: consentire al gallo di identificare in modo univoco ognuno dei polli del bambino e i messaggi RELAY (indirettamente, da qui la parola "RELÈ") a un pollo specifico. (Per i polli vicino al gallo, può parlare direttamente con loro, ma questo è oltre il punto)
Limitazioni e amp; condizioni:
- Il gallo può parlare con qualcuno (quelli che gli sono vicini), ma non può identificare nessuno dei polli prima di assegnare loro degli ID (basta correggere quella scappatoia per formare l'inizio)
- Il gallo può accedere / parlare direttamente a un numero molto limitato di polli vicino a lui, e per i polli lontani, può solo passare messaggi (che possono includere informazioni ID o altre informazioni, i pacchetti / messaggi sono personalizzabili) polli (sì, più di una gallina) vicino a lui, e lascia che quei polli trasmettano i messaggi, usando il metodo del diluvio.
- Qualsiasi 2 polli si chiudono (ho capito che "quanto vicino" potrebbe essere un grosso problema, ma per ora, definiamolo come "l'uno accanto all'altro") l'uno all'altro possono parlare tra loro.
- I polli sono sparsi ovunque in modo irregolare. Immagina di avere un'enorme scacchiera e ha molte, molte più griglie, le galline occupano queste griglie in modo radicale, MA puoi sempre trovare il modo di trasmettere il messaggio del gallo a tutti, anche se significa che una grande quantità di messaggi dovrà passa un paio di polli, perché questi due sono vicini l'uno all'altro e formano involontariamente una sorta di "ponte" tra due grandi gruppi di polli.
Una panoramica di ciò che potrebbe accadere se dovessi provare ad assegnare a ogni cucciolo di pollo un numero ID univoco (solo un esempio, non l'effettiva implementazione in quanto non so come):
Il gallo parla con il pollo più vicino a lui usando un pacchetto di configurazione di qualche tipo e chiama il pollo "0x01", quindi il gallo parla con un altro pollo accanto a lui (in realtà, questo ordine potrebbe essere causato dalla distanza, o puramente casuale) e chiamarlo "0x02". Quindi 0x02 passa questo pacchetto di configurazione a un altro pollo con un certo flag impostato che informa chiunque abbia ricevuto questo pacchetto che l'ID "0x02" era già stato preso. Questo processo viene ripetuto fino a quando un chiken ottiene un ID "0x1E", e da quel momento in poi nessuno risponderà a nessun pacchetto di configurazione, e ogni singolo pollo può essere ID-ed univocamente dato che semplicemente ignorerà i pacchetti che contengono ID diversi da propria.
Nota che lo scenario sopra riportato non è l'effettiva implementazione, solo un esempio per aiutarti a capire che cosa è probabile che accada.
Ultimo ma non meno importante, per favore non ottenere alcun algoritmo di routing, per favore usa solo "stupido" flood. E sì, lo so che è un po 'irragionevole, ma devo implementare l'intero schema usando apparecchiature di fascia bassa, abbastanza basse che non ho il tipo di RAM e probabilmente nemmeno la potenza di calcolo per eseguire un processo di instradamento attivo. / p>
E per alluvione, per favore non ti preoccupare dei messaggi che si ripetono all'infinito, sovraccaricando e paralizzando l'intera rete, ci sono già meccanismi in plaque per impedirlo (ad esempio, ridurre la frequenza di ripetizione esponenziale di un messaggio)
Il punto è, sono sicuro che ci sono algoritmi per questo, ma non ho uno sfondo solido in SE o CS, quindi per favore aiuto?