Apriori
Apriori
#include <stdio.h>
#include <stdlib.h>
#define MAX_ITEMSET_SIZE 10
typedef struct {
int items[MAX_ITEMS];
int count;
} Itemset;
typedef struct {
Itemset itemsets[MAX_ITEMSET_SIZE];
int count;
} ItemsetList;
typedef struct {
int items[MAX_ITEMS];
int count;
} Transaction;
Transaction transactions[MAX_TRANSACTIONS];
int num_transactions = 0;
int min_support = 2;
void read_transactions() {
// Example:
transactions[0].items[0] = 1;
transactions[0].items[1] = 2;
transactions[0].count = 2;
transactions[1].items[0] = 2;
transactions[1].items[1] = 3;
transactions[1].count = 2;
num_transactions = 2;
int i, j;
int found = 0;
if (subset->items[i] == set->items[j]) {
found = 1;
break;
if (!found) return 0;
}
return 1;
int count = 0, i;
if (is_subset(itemset, &transactions[i])) {
count++;
return count;
int i, j, k;
candidates->count = 0;
Itemset new_itemset;
new_itemset.count = prev_itemsets->itemsets[i].count + 1;
new_itemset.items[k] = prev_itemsets->itemsets[i].items[k];
}
new_itemset.items[new_itemset.count - 1] = prev_itemsets->itemsets[j].items[prev_itemsets-
>itemsets[j].count - 1];
candidates->itemsets[candidates->count++] = new_itemset;
void apriori() {
int i, k;
current_itemsets.count = 0;
Itemset itemset;
itemset.count = 1;
itemset.items[0] = i;
current_itemsets.itemsets[current_itemsets.count++] = itemset;
}
k = 1;
int j;
printf("\n");
generate_candidates(¤t_itemsets, &candidates);
current_itemsets = candidates;
k++;
int main() {
read_transactions();
apriori();
return 0;