## 6 Simulation Experiments  
We use simulation experiments to validate our algorithm, in which the frequency of each user for each content is randomly generated to satisfy the sum of the frequency of each user for all contents is 1000, and the size of each content is similarly randomly generated to ensure that the sum of the size of each content is 1000 with a minimum of one. The benchmark algorithm that serves as a reference for our algorithm is the Least Frequently Used (LFU) caching algorithm. This algorithm caches the items that attract the maximum total demand among all users, but it does not recommend any content. LFU is able to maximize the cache hit rate in the absence of recommendations. In Figure 2, \(n=100\), \(m=50\), all \(d_{j}=0.3\), all \(\gamma=0\), and all \(\alpha=0.2\). The figure contains the LFU algorithm and the variation of the hit rate with capacity for \(k=1,10\), and \(40\). First, the cache hit rate increases with capacity for both the LFU algorithm and our algorithm for different values of \(k\). The hit rate increases with capacity. The upper limit is reached when the capacity is close to the sum of the contents, when it can approach 100% hits. However, this means that virtually all content is cached, but we know that it is impractical and pointless to go to the server and cache all content. Secondly, no matter what the value of \(k\) is, our algorithm will always hit above the LFU algorithm, and the higher the value of \(k\), the higher the hit rate. This can be interpreted as an expansion of the optional space of our recommended content, which gives our algorithm more room to play. Finally, we observe that the larger the server cache capacity, the smaller the gap between the gains of different algorithms. On the contrary, when the cache capacity is small, the difference between LFU and our algorithm is huge, which reflects the advantages of our algorithm even more. Figures 3 and 4 with \(n=100\), \(m=50\), \(c=300\), \(k=20\) and all \(d_{j}=0.3\). Figure 3 illustrates that the incremental hit rate of our algorithm compared with the LFU algorithm varies with \(\gamma\) and \(\alpha\) and that the incremental hit rate mainly reflects the role of the recommendation algorithm. When \(\alpha\) is constant and \(\gamma\) increases, the hit rate increment increases at this time, which indicates that the larger the gamma is, the more space the recommendation algorithm has to choose from, which brings more hit rate increment. On the other hand, as \(\gamma\) increases, the hit rate increment decreases. This indicates that the effect of \(\gamma\) on the hit rate increase is gradually decaying and also indicates that the problem is submodular. In fact, as \(\gamma\) increases, the main factor limiting the increase in hit rate becomes \(\alpha\). When \(\gamma\) is constant, the change in \(\alpha\) is observed to be similar to that is \(\gamma\). This indicates that \(\alpha\) and \(\gamma\) together determine the incremental hit rate. Theoretically, \(\alpha\) and \(\gamma\) should be set as large as possible to ensure larger hit increments. However, \(\gamma\) and \(\alpha\) actually limit the magnitude of distortion of the recommender system with respect to the user's original preferences. When both \(\gamma\) and \(\alpha\) are large, the limits are weakened, and the recommender system's distortion of user preferences can be large. We use Jensen-Shannon Divergence (JSD) to measure the degree of distortion of user preferences, where JSD is actually the difference in the distribution of the probability of a user's content request after the action of the recommender system, i.e., \(D_{JS}=\frac{1}{2}[D_{KL}(P||M)+D_{KL}(\hat{P}||M)]\), where \(M=P+\hat{P}\) and \(D_{KL}(P||Q)=\frac{1}{n}\sum_{i=1}^{n}\log[P_{i}/Q_{i}]\). Figure 4 illustrates the variation of JSD with \(\gamma\) and \(\alpha\). Figure 2: Hit rate varies with capacity \(c\).