Metadata-Version: 2.1
Name: PyNetIM
Version: 0.2.2
Summary: A Python library for Network Influence Maximization
Author-email: Kaijing Zhang <zhkaij@foxmail.com>
License: MIT
Project-URL: Homepage, https://github.com/zzzkhj/PyNetIM
Project-URL: Repository, https://github.com/zzzkhj/PyNetIM
Project-URL: Issues, https://github.com/zzzkhj/PyNetIM/issues
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: networkx

# PyNetIM

PyNetIM 是一个用于社交网络中影响力最大化的 Python 库，实现了多种经典算法和扩散模型。

## 功能特点

- 实现了多种影响力最大化算法
- 支持独立级联(IC)和线性阈值(LT)扩散模型，可以自定义扩展（继承BaseDiffusionModel）
- 提供图结构封装和边权重设置工具
- 支持单进程和多进程模式
- 包含算法性能计时器装饰器

## 算法实现

### 启发式算法
- [SingleDiscountAlgorithm](src\pynetim\algorithms\heuristic_algorithm.py): 简单度折扣算法
- [DegreeDiscountAlgorithm](src\pynetim\algorithms\heuristic_algorithm.py): 度折扣算法

### 模拟算法
- [GreedyAlgorithm](src\pynetim\algorithms\simulation_algorithm.py): 贪婪算法
- [CELFAlgorithm](src\pynetim\algorithms\simulation_algorithm.py): CELF算法(Cost-Effective Lazy Forward)

### 反向影响采样算法
- [BaseRISAlgorithm](src\pynetim\algorithms\RIS_algorithm.py): 基础RIS算法
- [IMMAlgorithm](src\pynetim\algorithms\RIS_algorithm.py): IMM算法(Influence Maximization via Martingales)

## 扩散模型

- [IndependentCascadeModel](src\pynetim\diffusion_model\independent_cascade_model.py): 独立级联模型(IC)
- [LinearThresholdModel](src\pynetim\diffusion_model\linear_threshold_model.py): 线性阈值模型(LT)

## 核心组件

### 图结构
- [IMGraph](src\pynetim\graph\graph.py#L7-L133): 影响力最大化图类，封装NetworkX图对象

### 工具函数
- [set_edge_weight](src\pynetim\utils\utils.py): 设置边权重
- [run_monte_carlo_diffusion](src\pynetim\diffusion_model\run_monte_carlo_diffusion.py): 执行蒙特卡洛模拟扩散
- [Timer](src\pynetim\decorator\decorator.py): 计时器装饰器

## 安装

```bash
pip install pynetim
```


## 快速开始

```python
import networkx as nx
from pynetim import IMGraph, IndependentCascadeModel
from pynetim.algorithms import DegreeDiscountAlgorithm

# 创建图对象
g = nx.erdos_renyi_graph(100, 0.1)
# 入度分之一作为权重
graph = IMGraph(g, edge_weight_type='WC')

# 使用算法
algorithm = DegreeDiscountAlgorithm(graph)
seeds = algorithm.run(k=10)
```


## 项目结构

```
pynetim/
├── algorithms/         # 算法实现
├── diffusion_model/    # 扩散模型
├── graph/             # 图结构封装
├── utils/             # 工具函数
├── decorator/         # 装饰器
└── __init__.py        # 包初始化文件
```


## 版本

当前版本: 0.1.0

## 许可证
[MIT](LICENSE)
