Nwlapcug.com


Come fare un algoritmo di intersezione insiemistica

Come fare un algoritmo di intersezione insiemistica


Intersezione è una delle due operazioni fondamentali sui set. L'intersezione di due insiemi è un altro set composto di tutto l'elemento comune a entrambi i set. L'algoritmo generale per la produzione di intersezione è quello di scegliere il primo elemento in un set e controllare per vedere se è nel secondo set. In questo caso, è necessario includerlo nell'intersezione. Continuare questo processo scegliendo un elemento diverso del primo set di ogni tempo. Quando avete controllato tutti gli elementi del primo set, l'intersezione è completa.

Istruzioni

1

Impostare uno spazio in cui si svilupperà l'intersezione. Se gli insiemi sono nelle matrici, impostare una matrice per l'intersezione. L'intersezione sarà non più grande del set più piccolo.

2

Scrivere un ciclo"esterno" che funziona attraverso uno dei set – la scelta di un elemento diverso per ogni esecuzione del ciclo. L'algoritmo sarà finito quando è finito questo ciclo esterno.

3

Codice un "ciclo interno" che funziona attraverso l'altro insieme. Ogni elemento viene confrontato con l'elemento dal ciclo esterno. Se esiste una corrispondenza, è possibile includere l'elemento corrispondente nell'intersezione.

4

Continuare l'algoritmo fino ad entrambi gli anelli alla fine. È possibile salvare un po' di tempo se si sfuggire il ciclo interno, non appena si trova una corrispondenza. Non c'è nessuna necessità di continuare il controllo.

Consigli & Avvertenze

  • Il codice C per una funzione che funziona con i set di numeri interi in matrici, array_a e array_b, sarebbe: int * intersection_function (int * a, int * b, int ray_size) {int r, k, j, io [ray_size]; r = 0; for (k = 0; k meno-rispetto ray_size; k + +) per (j = 0; j meno-rispetto ray_size) se un [k] = = b [j] {[r] = un [k]; r + +} tornare i}. Se i numeri interi vengono memorizzati come elenchi collegati, il processo è simile: le opere di elenco esterno giù un elenco collegato e il ciclo interno funziona ripetutamente la tendina. Il codice C sarebbe simile a questa: int_type * intersection_function (p3 = new(int_type); int_type * un, b int_type) {p1 = a; while (p1! = Null) {p2 = b; while (p2! = NULL) {se (p1.number = = p2.number) {p3.number = p1.number; p3.next = new(int_type); p3 = p3.next} p2 + +} p1 + +} restituire p3}.
  • Quando un insieme è molto più grande rispetto agli altri, questo algoritmo può sprecare un sacco di tempo. Un rapido controllo per vedere se ogni elemento del set più piccolo è il set più grande può risparmiare un sacco di tempo. Questo vuole solo un viaggio attraverso il set più piccolo. Se ogni membro del set più piccolo è il set più grande, l'intersezione è uguale l'insieme più piccolo.